Emberjs:调用全局操作时重新加载当前状态
Posted
技术标签:
【中文标题】Emberjs:调用全局操作时重新加载当前状态【英文标题】:Emberjs: reload current state when global action called 【发布时间】:2012-10-18 22:08:08 【问题描述】:假设我在下面的 Ember 代码中进入了“用户”状态:
html:
<button action doSomething App.currentUsername>Go!</button>
JS:
App.Router = Ember.Router.extend(
enableLogging: true,
root: Ember.Route.extend(
doSomething: Ember.Route.transitionTo('user'),
main: Ember.Route.extend(
route: '/'
),
user: Ember.Route.extend(
route: '/:username',
connectOutlets: function(router, context)
//some actions
)
)
);
当再次调用“doSomething”操作时,我希望 Ember 重新运行 connectOutlets 代码(因为用户名会更改)。
将代码放在“用户”内的“doSomething”操作中不起作用,因为我需要上下文。
知道怎么做吗?
谢谢
【问题讨论】:
【参考方案1】:显然,在 Ember 中,如果使用相同的上下文对象调用状态,它将不会连接出口(或者甚至不会首先进入状态)。解决这个问题的方法很简单,只需提供一个新的上下文,因此我们将 'doSomething' 替换为:
doSomething: function(router, event)
router.transitionTo('user', username: event.context.username);
【讨论】:
以上是关于Emberjs:调用全局操作时重新加载当前状态的主要内容,如果未能解决你的问题,请参考以下文章
页面重新加载后,如何使用 twitter bootstrap 保持当前选项卡处于活动状态?