由于Ember数据1.13很容易强制路由重新加载其模型,所以使用reload:true选项:
model(params) {
return this.store.findRecord('order', params.order_id, { reload: true });
},
这很好,现在我知道我的订单是最新的。但是订单的孩子呢。说订单有订单商品。如何强制从服务器重新加载?我正在寻找能够在每个订单项目中点击api的代码 - 无论是在干净地点击这条路线,还是在没有看过这些订单项目之前,或者在到达路线之前,都看过那些订单项目。
我正在考虑模型钩子,但在这里不知道最佳实践..
答案 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稳定时,我会更新这个答案。