这是我路由器的一部分:
this.resource('nodes', function () {
this.resource('allNodes', function () {
this.route('index');
this.route('new');
this.route('show', { path: '/:node_id/show' });
this.route('edit', { path: '/:node_id/edit' });
this.route('delete', { path: '/:node_id/delete' });
});
this.resource('services', function () {
this.route('index');
this.route('new');
this.route('show', { path: '/:service_id/show' });
this.route('edit', { path: '/:service_id/edit' });
this.route('delete', { path: '/:service_id/delete' });
});
...
在/nodes
路线中,我会重定向到allNodes.index
:
SettingsApp.NodesRoute = Ember.Route.extend({
redirect: function () {
console.log('NodesRoute.redirect > redirecting to %s', ROUTES.ALL_NODES);
this.transitionTo(ROUTES.ALL_NODES);
}
});
现在,在我的应用程序的其他部分,我正在使用url链接到服务:
#/nodes/services/71ae38cde8584dc9c4eea25e74e68310/show
但这不起作用,因为/nodes
的重定向正在进行中。我该如何防止这种情况发生?
转到/nodes
时,重定向必须仅为 ,而不是任何子网址。我必须通过在重定向之前检查currentPath
手动实现此过滤,还是有标准的方法来执行此操作?
答案 0 :(得分:1)
您需要手动实现(虽然信息在钩子中提供)
Addiitionally redirect
是一个弃用的钩子,支持afterModel
钩子。
SettingsApp.NodesRoute = Em.Route.extend({
afterModel: function(resolvedModel, transition){
if(transition.targetName == 'nodes'){
this.transitionTo(ROUTES.ALL_NODES);
}
}
});
答案 1 :(得分:1)
在NodesIndexRoute
中进行重定向。
App.NodesIndexRoute = Ember.Route.extend({
beforeModel: function () {
this.transitionTo('allnodes');
}
});