首页 > 解决方案 > 如何在 Ember 中的多个阶段进行 backgroundReload?

问题描述

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

这可能是这样的:

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

加载关系后,视图会自动更新。

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

那么,点击单个帖子时,是否可以按顺序执行以下几点?

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

标签: ember.jsdatastore

解决方案


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

您应该通过使用 on和 onisLoaded属性来防止重新加载尚未加载的记录。DS.ModelDS.ManyArray

您可以使用 的eachRelationship方法DS.Model迭代所有关系。


推荐阅读