如何在Ember中的多个阶段进行backgroundReload?

时间:2018-09-04 23:33:21

标签: ember.js datastore

我正在获取一个没有关联的记录列表,例如posts。当我选择一个帖子时,我想立即查看该帖子,并后台加载其关系。

这可能是这样的:

this.store.findRecord('posts', params.id, {
    reload: false,
    backgroundReload: true,

一旦关系被加载,视图将自动更新。

但是,某些关系很复杂,需要一些时间来加载。滚动后它们变得相关。对于初始浏览量来说,有一种hasMany关系对我们很重要。他们之间的关系也很重要,但我也希望推迟他们。

因此,单击单个帖子时,可以按顺序进行以下几点吗?

  • 直接从缓存(reload: false)打开帖子
  • 后台重载,包括一个关系不包括
    • 背景重新加载关系包括关系的关系
  • 后台重载,包括所有关系

例如使用缓存的模型绘制初始模板后,还会发生3次更新。

1 个答案:

答案 0 :(得分:1)

您可以使用DS.ModelDS.ManyArray上可用的reload()方法。它返回一个Promise,该Promise在重新加载记录后解决。您可以根据需要使用Promise链接重新加载。

您应避免使用isLoadedDS.Model上可用的DS.ManyArray属性来重新加载尚未加载的记录。

您可以使用DS.Model中的eachRelationship method遍历所有关系。