嵌套路由,更新记录获取重新排序

时间:2016-10-14 05:48:08

标签: ember.js ember-data

看到一些奇怪的行为,完全难倒。

我有一个嵌套路线,所以“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);
}

更新: 在父路由上,关联在请求上被加载。此路线上的关联记录列表,列出了每次加载嵌套路径模型时重新排序的内容。

1 个答案:

答案 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