如果目标(包括动态 id)与当前路由匹配,是否有一般方法(即在应用程序路由器中)中止转换?
我尝试连接到 willTransition 但我发现的 transition.params 似乎包含当前的 ID,我没有什么可以比较它们的。
如果目标(包括动态 id)与当前路由匹配,是否有一般方法(即在应用程序路由器中)中止转换?
我尝试连接到 willTransition 但我发现的 transition.params 似乎包含当前的 ID,我没有什么可以比较它们的。
过渡的params
属性将引用当前路由的参数,而不是目标。您需要查看通过其providedModels
属性提供给过渡的模型。您的代码应如下所示:
willTransition: function(transition) {
if ((this.get('routeName') === transition.targetName) &&
(this.get('currentModel') === transition.providedModels[transition.targetName])) {
transition.abort();
return;
}
// ... other code here ...
}
我刚刚在我的应用程序中对此进行了测试,我认为它可以满足您的需求。基本上你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();
}
}
}
});