我设置的ember路线如下:
App.Router.map(function() {
this.resource("subreddit", { path: "/r/:subreddit_id" }, function() {
this.resource('link', { path: '/:link_id'} );
});
});
但我希望在一个完全独立的模板中查看每个链接。换句话说,我想渲染一个不同的html块,而不是将链接html呈现为subreddit的{{outlet}}。
答案 0 :(得分:1)
当您在浏览器中点击/r/xxx
时,Ember会查找与subreddit
相关的两个模板。首先,它会查找'subreddit'
,然后查找'subreddit/index'
。如果找到“subreddit
”,则会呈现,然后如果找到'subreddit/index'
,则会将其呈现为{{outlet}}
'subreddit'
。如果找不到'subreddit'
,则Ember将继续'subreddit/index'
。还会为嵌套在'subreddit'
下的所有子路径呈现/subreddit
模板,例如'link'
的{{1}}模板。 /r/xxx/yyy
有点像“每个模型布局”模板,允许您包装(装饰)所有子路径模板。
这样的事情应该让你保留你的嵌套路线,并允许你使用Ember默认行为。
'subreddit'
答案 1 :(得分:0)
如果要在单独的模板中呈现链接,则不应嵌套路线:
App.Router.map(function() {
this.resource("subreddit", { path: "/r/:subreddit_id" });
this.resource('link', { path: '/:link_id'});
});
您可以采用的另一种方法是使用命名的插座并覆盖相应路线的renderTemplate
并在指定的插座的位置渲染模板,看看这里有关详情:http://emberjs.com/guides/routing/rendering-a-template/
希望它有所帮助。