0

我有这样设置的余烬路线:

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

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

4

2 回答 2

1

当您/r/xxx在浏览器中点击时,Ember 会查找与subreddit. 首先它寻找'subreddit',然后寻找'subreddit/index'. 如果 ' subreddit' 如果找到,则将其渲染,然后如果'subreddit/index'也找到,则将其渲染到{{outlet}}of 中'subreddit'。如果'subreddit'没有找到,Ember 将继续前进'subreddit/index'。还为嵌套在 下的'subreddit'任何子路径呈现模板,/subreddit例如. 有点像“每个模型布局”模板,它允许您包装(装饰)所有子路径模板。'link'/r/xxx/yyy'subreddit'

像这样的东西应该让您保留嵌套路由,并允许您使用 Ember 默认行为。

<script type="text/x-handlebars" data-template-name="subreddit">
  <p>A static header bar for this subreddit could go here, or not.</p>
  {{outlet}}
</script>

<script type="text/x-handlebars" data-template-name="subreddit/index">
  <p>
    All of the details of the subreddit go here, this will be rendered
    into the {{outlet}} of "subreddit".
  </p>
</script>

<script type="text/x-handlebars" data-template-name="link">
  <p>
    Link view goes here.  This template will replace "subreddit/index" 
    in the {{outlet}} of "subreddit".
  </p>
</script>
于 2013-09-18T04:15:17.277 回答
0

如果要在单独的模板中呈现链接,则不应嵌套路由:

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

您可以采取的另一种方法是使用命名插座并覆盖renderTemplate相应的路由并在命名插座的位置呈现模板,请查看此处以获取更多信息:http ://emberjs.com/guides/路由/渲染模板/

希望能帮助到你。

于 2013-09-17T20:24:59.270 回答