我知道如何使用Ember.RSVP.hash将多个模型加载到路径中。 (参见Jsbin Children菜单)。
我使用动态部分从集合children/1
访问一个元素。
但是我无法将更多模型加载到嵌套资源中。
在我的例子中,我想填充选择的所有玩具,而不仅仅列出孩子的玩具。
我试图访问路线children
App.ChildRoute = Ember.Route.extend({
model: function(param){
return Ember.RSVP.hash({
allToys: this.modelFor("children"),
child:this.store.find('child', param.child_id)
});
}
});
并使用其模型的玩具属性(因为已经装载了所有玩具)
child.hbs
<h4>All avaiable toys</h4>
<table>
{{#each toy in model.allToys.toys}}
<tr>
<td>{{toy.name}}</td>
</tr>
{{/each}}
</table>
答案 0 :(得分:1)
此处的第一个问题是您尝试从children
抓取模型,但尚未定义children
路由,您定义了childrenIndex
路由。如果您要直接导航到child
路由,则childrenIndex
路由不会被实例化。当你点击children
路线并且没有更深的时候,它才被击中。因此,要么您需要将逻辑从childrenIndex
移动到children
路由,要么只在商店中使用all
,这不会获取任何新数据,只返回所有商店里不同类型的玩具。
this.store.all('toy')
你遇到的第二个问题是,当你使用链接到并发送一个模型时,它会跳过模型钩子,这对于动态路径(你定义:id
)是一个问题,你期望它返回多个模型,不鼓励这种类型的路由,并建议您在setupController
App.ChildRoute = Ember.Route.extend({
model: function(param){
this.store.find('child', param.child_id);
},
setupController: function(controller, model){
this._super(controller, model); //default implementation of setupController
controller.set('allToys', this.store.all('toy'));
}
});
http://jsbin.com/EveQOke/155/edit
serialize: function(model){
return {child_id:model.get('id')};
}