gpt4 book ai didi

javascript - Ember 嵌套路线。加载更多模型

转载 作者:行者123 更新时间:2023-11-28 01:14:08 25 4
gpt4 key购买 nike

JsBin http://jsbin.com/EveQOke/153/

我知道如何使用 Ember.RSVP.hash 将多个模型加载到一条 route 。 (参见 Jsbin child 菜单)。我使用动态部分来访问集合 children/1 中的一个 elem。但我无法将更多模型加载到嵌套资源中。

在我的示例中,我想填充所有选择的玩具,而不仅仅是列出 child 的玩具。

我尝试访问路线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>

最佳答案

这里的第一个问题是您尝试从 children 获取模型,但您尚未定义 children 路由,而是定义了 childrenIndex路线。如果您直接导航到 child 路由,则 childrenIndex 路由不会被实例化。仅当您到达 children 路线时才会到达,不会更深。因此,您需要将逻辑从 childrenIndex 移动到 children 路由,或者仅在商店上使用 all,这不会获取任何新数据,仅返回商店中所有不同类型的玩具。

this.store.all('toy')

您遇到的第二个问题是,当您使用链接到并发送模型时,它会跳过模型 Hook ,这对于动态路由(您定义 :id 的位置)来说是一个问题,并且您'希望它返回多个模型,在这种类型的路由上不鼓励这样做,并建议您在 setupController

中的 Controller 上设置其他属性
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')};
}

http://jsbin.com/EveQOke/163/edit

关于javascript - Ember 嵌套路线。加载更多模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24047399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com