ember.js - 如何在 Ember 中的多个阶段进行 backgroundReload?
问题描述
我正在获取一个记录列表,例如posts
,没有关系。当我选择一个帖子时,我想立即查看该帖子,并在后台加载其关系。
这可能是这样的:
this.store.findRecord('posts', params.id, {
reload: false,
backgroundReload: true,
加载关系后,视图会自动更新。
但是,有些关系很复杂,需要一些时间来加载。它们在滚动后变得相关。有一种hasMany
关系对于初始浏览量很重要。他们的关系也很重要,但我也更喜欢推迟。
那么,点击单个帖子时,是否可以按顺序执行以下几点?
- 直接从缓存中打开帖子 (
reload: false
) - 后台重新加载,包括一个关系,不包括关系的关系
- 后台重新加载关系,包括关系的关系
- 后台重新加载,包括所有关系
例如,在使用缓存模型绘制初始模板后,将发生 3 次更新。
解决方案
您可以使用和reload()
上可用的方法。它返回一个在重新加载记录后解决的 Promise。您可以根据需要使用该 Promise 链接您的重新加载。DS.Model
DS.ManyArray
您应该通过使用 on和 onisLoaded
属性来防止重新加载尚未加载的记录。DS.Model
DS.ManyArray
您可以使用 的eachRelationship
方法来DS.Model
迭代所有关系。
推荐阅读
- bash - 自定义编写的 Nagios 插件总是返回不正确的值,但在命令行上工作
- sql - postgresql - 将间隔格式化为具有大量小时数的时间
- javascript - 如何检测浏览器的chrome
- html - css 属性掩码不适用于 svg
- python - 使用 numpy 的逐行矩阵乘法
- python - 从 python 控制台菜单获取返回值
- microsoft-graph-api - 要使用 MSGraph 读取其他用户的邮箱设置,应用程序真的需要应用程序级别的权限吗?
- load-balancing - GRPC Java 负载平衡 - 未从 NameResolver 调用启动方法
- javascript - 使用 child_process.spawn() 在原始模式下打开 VIM 会导致它冻结
- python - Python 在日志记录中向基于 structlog 的格式化程序添加额外字段