【问题标题】:In Ember Data force a route to always reload the children of a model在 Ember Data 中,强制路由始终重新加载模型的子项
【发布时间】:2016-06-29 18:17:56
【问题描述】:

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

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

这很好,现在我知道我的订单是最新的。但是秩序的孩子呢。假设一个订单有订单项目。我如何强制那些也从服务器重新加载?我正在寻找将每个订单项访问一次 api 的代码 - 无论是干净地访问此路线,之前没有看到这些订单项,还是在到达路线时,之前看过这些订单项。

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

【问题讨论】:

  • 如果你可以改变你的 api 响应,你总是可以侧载所有的孩子。这对我有用!

标签: ember.js ember-data


【解决方案1】:

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

方法 1

让孩子们分担。

方法 2

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

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

在 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 稳定后更新这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2017-05-12
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多