ember.js:如果target匹配当前路径,如何中止转换

时间:2013-09-04 17:26:49

标签: ember.js transitions ember-router

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

我尝试挂钩到willTransition但是我发现的transition.params似乎包含了当前的id,我没有什么比较它们。

2 个答案:

答案 0 :(得分: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 ...
}

答案 1 :(得分: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();
      }
    }
  }

});