这是我正在学习构建的应用程序。
类别有很多产品。
类别的标记 - 标题和作为正文的产品属于类别模板 router.js
MyApp.Router.map(function () {
this.resource('categories', {path: '/'}, function () {
this.resource('category', { path: '/:category_id'}, function () {
this.resource('product', {
path: '/:product_id'
});
});
});
});
我的分类车把
<div class="panel-group" id="accordion1">
{{#each category in model}}
{{view MyApp.AccordionView context=category}}
{{/each}}
</div>
和我的手风琴观点
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
{{#view MyApp.AccordionTitleView }}{{name}} {{/view}}
</h4>
</div>
<div {{bind-attr id=id}}class="panel-collapse collapse">
<div class="panel-body">
<table class="table">
<tbody>
{{#each products itemController="product"}}
<tr><td>{{#link-to 'category.product' category content }}{{content.name}}{{/link-to}}</td></tr>
{{/each}}
</tbody>
</table>
</div>
</div>
</div>
我的问题通过改变得到了解决
我在手风琴中的{{#link-to 'category.product' category content }}
观点
{{#link-to product' category content }}
但是根据ember指南 Ember guides 我可以传递两个模型,如此示例代码
<p>
{{#link-to 'photo.comment' 5 primaryComment}}
Main Comment for the Next Photo
{{/link-to}}
</p>
我不明白是否因为我的路由器层次结构。但在任何情况下,我认为它应该给出一些不错的错误。我不知道专家们对此有什么看法
答案 0 :(得分:0)
您必须在链接中使用'product'
而不是'category.product'
。
这是因为在MyApp.Router.map()
中,您将产品视为资源,而不是路径。
资源的路由名称没有前缀,而路由的路由名称以其父资源为前缀。
见http://emberjs.com/guides/routing/defining-your-routes/#toc_nested-resources