在Ember Data中,强制一条路径始终重新加载模型的子项

时间:2016-03-14 15:51:11

标签: ember.js ember-data

由于Ember数据1.13很容易强制路由重新加载其模型,所以使用reload:true选项:

model(params) {
  return this.store.findRecord('order', params.order_id, { reload: true });
},

这很好,现在我知道我的订单是最新的。但是订单的孩子呢。说订单有订单商品。如何强制从服务器重新加载?我正在寻找能够在每个订单项目中点击api的代码 - 无论是在干净地点击这条路线,还是在没有看过这些订单项目之前,或者在到达路线之前,都看过那些订单项目。

我正在考虑模型钩子,但在这里不知道最佳实践..

1 个答案:

答案 0 :(得分:0)

Jeff在上面和Slack中概述了两种方法。

方法1

安抚孩子们。

方法2

为每个孩子单独重新加载。

在Ember Data 2.5之前,我会设想使用peekRecord,如果不是null,则重新加载。

在Ember Data 2.5beta中,我认为你可以做类似

的事情
let promiseArray = [];
if (order.hasMany('orderItems').value() !== null) {
  var ids = order.hasMany('orderItems').ids();

  ids.forEach(id => promiseArray.addObject(store.findRecord('orderItem', id, {reload: true})));
}
return Ember.RSVP.all(promiseArray);

当2.5稳定时,我会更新这个答案。