父级覆盖 renderTemplate 时未呈现子路由模板

Child route template not rendered when parent overrides renderTemplate

我的路线是:

this.resource('workpaper', function() {
    this.route('add');
});

对于 workpaper 路由,我想决定渲染哪个模板,所以在 WorkpaperRoute 中我重写了 renderTemplate():

renderTemplate: function(controller, model) {
    this.render('workpaper/index');
}

问题是,当我导航到 add 路线时,呈现的是 workpaper/index 模板,而不是 workpaper/add 模板。

WorkpaperAddRoute 中覆盖 renderTemplate() 似乎没有效果:

renderTemplate: function(controller, model) {
    this.render('workpaper/add');
}

有什么想法吗?

当您访问像 workpaper.add 这样的路线时,Ember 将加载 WorkpaperAddRoute,但也会加载其上方的 WorkpaperRouteApplicationRoute。这意味着您仍然可以从父路由访问模型之类的东西。在 WorkpaperRoute 上覆盖 renderTemplate 将影响该路线的所有子路线。

要实现您的目标,请尝试覆盖 WorkpaperIndexRoute 上的 renderTemplate