我有一个嵌套路线,所以“route1.show.route2.show”。在点击route1.show时,会加载一个项目列表 - 然后单击任何项目将加载该项目的嵌套路径。
我所看到的是,单击任何项目会正确加载嵌套路径,但会重新排序原始项目列表,以便所单击的项目现在位于列表的最后。
第一个路由的模型钩子没有被调用(因为我在链接中使用资源,而不是resource.id)
但嵌套路由正在重新加载嵌套资源,并添加了更多字段。为什么重新加载这一项会导致ember数据改变父路由中关联的顺序?
父路线模型钩子:
model(params) {
this.get('store').findRecord('resource', params.resource_id);
}
嵌套路由模型钩子:
model(params) {
return this.get('store').findRecord('nestedResource', params.nestedResource_id);
}
更新: 在父路由上,关联在请求上被加载。此路线上的关联记录列表,列出了每次加载嵌套路径模型时重新排序的内容。
答案 0 :(得分:1)
在您的父路线上,对模型进行排序,以防止新负载弄乱订单。
model() {
return this.store.findAll('resource')
.then(resources => resources.sortBy('time'))
}
假设nestedResource
模型上的resource
是类似数组的属性。
export default Model.extend({
sortedNestedResource: Ember.computed.sort('nestedResource', 'sortBy'),
sortBy: ['date']
})
然后在模板中使用sortedNestedResource
,而不是nestedResource
。