我有一个“about”资源,其中嵌套有 about.philosophy 和 about.staff 路由。在 AboutRoute 中有一个重定向,因此当您单击导航上的“关于”链接时,应用程序会重定向到 about.philosophy。
Ew.AboutRoute = Ember.Route.extend({
redirect: function(){
this.transitionTo('about.philosophy');
}
});
但是,如果您当前位于其中一个嵌套路线内并再次单击导航中的“about”链接,它不会将您重定向到 about.philosophy,而是呈现“/about”,它没有模板,因此它是一个损坏的页面。
为什么在您再次尝试输入 AboutRoute 后此重定向不起作用?
更新
Dan 的解决方案解决了这个问题,但也导致子导航损坏。我将包含子导航代码的 AboutRoute 更改为 AboutIndexRoute,并且子导航不再显示:
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}}
最佳答案
我建议将您的 redirect
放在 AboutIndexRoute
上,这样只有当用户到达 /about
时才会调用它而不是子路线。例如,您可能希望允许用户直接导航到 /about/staff
,并且您不希望将 redirect
作为 AboutRoute
调用code> 在前往 AboutStaffRoute
的途中输入。
顺便说一句,redirect
现在已被弃用,取而代之的是 afterModel
Hook (尽管 afterModel
内部调用 redirect
) > 暂时)。
关于javascript - Ember 重定向仅在您第一次进入路线时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18949991/