2

如果目标(包括动态 id)与当前路由匹配,是否有一般方法(即在应用程序路由器中)中止转换?

我尝试连接到 willTransition 但我发现的 transition.params 似乎包含当前的 ID,我没有什么可以比较它们的。

4

2 回答 2

1

过渡的params属性将引用当前路由的参数,而不是目标。您需要查看通过其providedModels属性提供给过渡的模型。您的代码应如下所示:

willTransition: function(transition) {
  if ((this.get('routeName') === transition.targetName) &&
      (this.get('currentModel') === transition.providedModels[transition.targetName])) {
    transition.abort();
    return;
  }

  // ... other code here ...
}
于 2013-12-22T06:31:13.170 回答
0

我刚刚在我的应用程序中对此进行了测试,我认为它可以满足您的需求。基本上你job_id在参数中测试model.id你的控制器。

App.JobRoute = Ember.Route.extend({

  actions: {
    willTransition: function(transition) {
      if (this.controller.get('model.id') == transition.params.job_id) {
        transition.abort();
      }
    }
  }

});
于 2013-09-04T17:52:10.253 回答