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

问题描述 投票:0回答:1

我正在拿一份记录列表,比如posts,没有关系。当我选择一个帖子时,我希望立即看到帖子,然后加载它的关系。

这可能是这样的:

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

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

但是,某些关系很复杂,需要一些时间来加载。滚动后它们变得相关。有一个hasMany关系对初始网页浏览很重要。他们的关系也很重要,但我也更愿意推迟他们。

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

  • 直接从缓存中打开帖子(reload: false
  • 背景重新加载包括排除关系关系的一种关系 背景重载关系包括关系的关系
  • 后台重载包括所有关系

例如。使用缓存模型绘制初始模板后,将再进行3次更新。

ember.js datastore
1个回答
1
投票

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

您应该使用isLoaded以及DS.Model上提供的DS.ManyArray属性来防止重新加载尚未加载的记录。

您可以使用eachRelationship methodDS.Model来迭代所有关系。

© www.soinside.com 2019 - 2024. All rights reserved.