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 保持当前选项卡处于活动状态?

Next.js 在下一页的 getInitialProps 完成加载时保持当前页面处于活动状态并重新渲染

在 emberjs 中重新渲染视图

再次单击当前路线链接时,如何重新加载 Web 应用程序?

如何重新加载当前状态?

全局数据/对象的 Javascript 存储/状态