我有一个'about'资源,其中包含about.philosophy和about.staff路由。在AboutRoute中有一个重定向,这样当你点击导航上的'about'链接时,app会重定向到about.philosophy。
Ew.AboutRoute = Ember.Route.extend({
redirect: function(){
this.transitionTo('about.philosophy');
}
});
但是,如果您当前位于其中一个嵌套路线中并再次单击导航中的“关于”链接,而不是将您重定向到about.philosophy,则会呈现'/ about',这样就没有模板它是一个破碎的页面。
尝试再次输入AboutRoute后,此重定向怎么办?
更新
Dan的解决方案解决了这个问题,但它也导致了一个破坏的subnav。我将具有子空间代码的AboutRoute更改为AboutIndexRoute,并且subnav不再显示:
Ew.AboutIndexRoute = Ember.Route.extend({
activate: function(){
this.controllerFor('application').set('renderAboutSubNav', true);
},
deactivate: function(){
this.controllerFor('application').set('renderAboutSubNav', false);
},
redirect: function(){
this.transitionTo('about.philosophy');
}
});
然后在application.hbs中我有:
{{#if renderAboutSubNav}}
{{render 'about/subnav'}}
{{/if}}
答案 0 :(得分:3)
我建议您将redirect
放在AboutIndexRoute
上,这样只有当用户最终在/about
而不是子路线时才会调用它。例如,您可能希望允许用户直接导航到/about/staff
,并且您不希望调用redirect
,因为AboutRoute
是在{{1}的路上输入的}}
顺便说一下,AboutStaffRoute
现已弃用,而不是redirect
挂钩(尽管afterModel
现在内部调用afterModel
。