如何在没有嵌套模板的情况下使用嵌套路由

时间:2013-09-17 20:22:14

标签: javascript ember.js

我设置的ember路线如下:

App.Router.map(function() {
        this.resource("subreddit", { path: "/r/:subreddit_id" }, function() {
          this.resource('link', { path: '/:link_id'} );
        });
      });

但我希望在一个完全独立的模板中查看每个链接。换句话说,我想渲染一个不同的html块,而不是将链接html呈现为subreddit的{{outlet}}。

2 个答案:

答案 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/

希望它有所帮助。