我需要跟踪getter是否加载到其他没有@computed属性的getter中。我该怎么办?
@computed('current.locationId')
get currentApplications() {
const query = {
locationID: get(this, 'current.locationId')
};
return this.store.pagedArray(this.store.query('shift-application', query));
}
get applicationsLoaded() {
return this.currentApplications.isFulfilled
}
我需要跟踪currentApplications.isFulfilled
而不使用e1d1e
1条答案
按热度按时间pjngdqdw1#
您在跟踪getter中承诺的结果时会遇到问题(不管是否计算),不过有几个库可以帮助您解决这个问题,我强烈建议您使用其中的一个库,因为这样做您自己可能会变得复杂和错误。
原因是,在处理网络数据时,必须对错误状态、加载状态等进行建模。
ember资源
GitHub-Docs
这个库为Ember提供了一个新的React性原语,希望将来成为框架中的默认原语。
在其中一个示例中,您可以在远程请求bi的整个生命周期中提供跟踪状态,如下所示:
来自本页:https://ember-resources.pages.dev/functions/index.resource-1
此外,README和documented here上还提供了一个实用程序
b1a1ab
它提供了以下属性以在模板中使用:https://ember-resources.pages.dev/classes/util_function.State
RemoteData
是一个示例,说明了如何构建自己的带参数的资源,如果愿意的话:https://ember-resources.pages.dev/functions/util_remote_data.RemoteDataember数据资源
GitHub
因为看起来您正在使用ember数据,所以您可能对ember的数据资源中的这个实用程序感兴趣——它提供了许多您需要处理的中间状态。
该库建立在e1d1e之上。
ember异步数据
GitHub
这与“资源”非常相似,因为资源“字面上只是助手”(但在JS中有一些更好的人机工程学用于互操作)。
README有一些可靠的示例,还有一个类似的API
(这是自述文件的摘录)
在仅限模板的代码中以声明方式呈现承诺:
基于支持类中组件的参数创建声明性数据获取:
(请参阅下面的指南,了解为什么使用@cached!)
其他和参考
keepLatest
resource