我有一个路由器,每个路由(和路由对象)都有相应的模板。我希望能够独立于其父模板显示每个模板,这意味着我不希望嵌套路由呈现给父模板的插座。基本上为每个嵌套路由创建一个单独的“页面”。
App.Router.map(function() {
this.resource('recipes', function() {
this.route('new');
this.route('show', { path: '/:recipe_id' });
});
});
我正在使用ember1.0.0-rc1
由于
答案 0 :(得分:4)
我希望能够独立于其父模板显示每个模板,这意味着我不希望将嵌套路由呈现给父模板的插座。
也许说明显而已,但如果您没有为资源创建模板,那将会发生什么。在您的情况下,如果您没有创建recipes.hbs
模板,那么ember会将new.hbs
和show.hbs
模板呈现到{{outlet}}
中的application.hbs
。
注意:如果这样做,Ember将输出一个控制台警告“直接父路线没有渲染到主插座......”
对此进行了详细说明答案 1 :(得分:1)
来自灰烬指南的快速说明
如果使用this.resource定义资源但不提供函数,则不会创建隐式resource.index路由。在这种情况下,/ resource将仅使用ResourceRoute,ResourceController和资源模板。
你的路由很好,@ mikegrassotti是正确的,虽然但是如果你想要一个“食谱”索引没有让你的“新”和“show”路径模板嵌套在“食谱”里面(没有主/细节)你需要创建一个里面没有插座的食谱/索引模板。
<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}}
答案 2 :(得分:0)
Ember.js不支持嵌套路由,它只支持嵌套资源。最终嵌套的路由可以包含路由。
将资源视为事物,将路线视为行动。