Emberjs:当全局动作调用时重新加载当前状态

时间:2012-10-29 15:05:02

标签: html model-view-controller ember.js javascript-framework

假设我在以下Ember代码中输入'user'状态:

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 个答案:

答案 0 :(得分:0)

显然在Ember中,如果使用相同的上下文对象调用状态,它将不会连接出口(或者甚至不首先进入状态)。解决这个问题的方法只是提供一个新的上下文,所以我们用'

替换'doSomething'
doSomething: function(router, event) {
  router.transitionTo('user', {username: event.context.username});
}