【问题标题】:New transition object created on redirect重定向时创建的新转换对象
【发布时间】:2013-12-05 03:16:30
【问题描述】:

我在路由中有一些 Ember 代码,我正在等待转换对象以便在转换完成后采取行动:

willTransition: function (transition) {
    ...

    // Wait until the transition has finished before continuing.
    transition.then(function () {
        // Transition successful
        ...
    }, function () {
        // Transition aborted
        ...
    });
}

在我的应用程序中,除了一种情况外,所有情况都调用了“成功转换”函数。这种情况是过渡到在其重定向方法中执行 transitionTo 的路由。对 transitionTo 的调用会中止原始转换 - 我在上面的代码中等待的转换 - 并用新转换替换活动转换。然后我正在等待的承诺被拒绝,因此我的中止处理程序被调用。

有什么方法可以获取新的转换对象并等待它?

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    从 Ember 1.2 (changelog here) 开始,didTransition 挂钩已添加到路由器 (pull request)。

    didTransition 将在转换发生后被调用。

    App.TestRoute = Ember.Route.extend({
      actions: {
        willTransition: function(transition) {
          ...
        },
        didTransition: function() {
          ...
        }
      }
    });
    

    JSBin example

    【讨论】:

    • 这是一个很好的补充,但似乎不太适合我想做的事情:我正在使用应用程序控制器的 currentPath 属性来根据用户当前的位置获取帮助内容在应用程序中,但在调用 didTransition 时似乎还没有更新。现在想来,或许仅仅观察 currentPath 的变化就足够了……
    • didTransitionsetupController 使用this.router.get('url') 怎么样?
    • 不错的建议 - 我从来没有真正考虑过使用路由器的属性,因为我一直觉得它是“内部”的东西。问题是这会返回 URL,当它是我追求的当前 Ember 路由名称时,因为这样处理动态段更容易。
    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 2012-10-07
    • 1970-01-01
    • 2020-08-24
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多