5

我有一个路由器,每个路由(和路由对象)都有相应的模板。我希望能够独立于其父模板显示每个模板,这意味着我不希望将嵌套路由呈现到父模板的出口。本质上为每个嵌套路由创建一个单独的“页面”。

App.Router.map(function() {
  this.resource('recipes', function() {
    this.route('new');
    this.route('show', { path: '/:recipe_id' });
  });
});

我正在使用 ember1.0.0-rc1

谢谢

4

3 回答 3

4

我希望能够独立于其父模板显示每个模板,这意味着我不希望将嵌套路由呈现到父模板的出口。

也许说明显而易见,但这正是如果您不为资源创建模板将会发生的情况。在您的情况下,如果您不创建模板,则 ember 会将and模板recipes.hbs呈现到in 中。new.hbsshow.hbs{{outlet}}application.hbs

注意:如果你这样做,Ember 将输出一个控制台警告“直接父路由没有渲染到主出口......”

这在ember 路由指南中有更详细的解释

于 2013-03-14T03:02:53.777 回答
1

来自 ember 指南的快速说明

如果您使用 this.resource 定义资源并且不提供函数,则不会创建隐式 resource.index 路由。在这种情况下,/resource 将只使用 ResourceRoute、ResourceController 和资源模板。

你的路由很好,@mikegrassotti 是正确的,如果你想要一个“recipes”的索引而不让你的“new”和“show”路由模板嵌套在“recipes”中(没有主/详细信息),你将需要创建一个食谱/index 模板里面没有插座。

<script type="text/x-handlebars" data-template-name="recipes/index">
<ul>
  {{#each}}
    <li>{{recipe}}</li>  
  {{/each}}
</ul>

您无需更改路线设置。正如 Mike 上面提到的,ember 会将 new.hbs 和 show.hbs 模板渲染到 application.hbs 中的 {{outlet}}

于 2014-03-05T04:04:01.640 回答
0

Ember.js 不支持嵌套路由,它只支持嵌套资源。最终嵌套的路由可以包含一个路由。

将资源视为事物,将路线视为行动。

于 2013-03-14T02:42:56.457 回答