【问题标题】:Emberjs: reload current state when global action calledEmberjs:调用全局操作时重新加载当前状态
【发布时间】: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”操作中不起作用,因为我需要上下文。

知道怎么做吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-09
      • 2016-02-08
      • 2011-01-09
      • 1970-01-01
      • 2016-11-28
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多