0

假设我在以下 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”操作中不起作用,因为我需要上下文。

知道怎么做吗?

谢谢

4

1 回答 1

0

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

doSomething: function(router, event) {
  router.transitionTo('user', {username: event.context.username});
}
于 2012-10-30T09:52:52.833 回答