父级覆盖 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
,但也会加载其上方的 WorkpaperRoute
和 ApplicationRoute
。这意味着您仍然可以从父路由访问模型之类的东西。在 WorkpaperRoute
上覆盖 renderTemplate
将影响该路线的所有子路线。
要实现您的目标,请尝试覆盖 WorkpaperIndexRoute
上的 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
,但也会加载其上方的 WorkpaperRoute
和 ApplicationRoute
。这意味着您仍然可以从父路由访问模型之类的东西。在 WorkpaperRoute
上覆盖 renderTemplate
将影响该路线的所有子路线。
要实现您的目标,请尝试覆盖 WorkpaperIndexRoute
上的 renderTemplate
。