gpt4 book ai didi

javascript - 在 Ember RESTAdapter 中存储持久变量的正确方法是什么

转载 作者:行者123 更新时间:2023-11-30 09:46:30 27 4
gpt4 key购买 nike

有时您需要一个只要页面未重新加载就一直存在的变量。由于许多 Ember 约定都在扩展对象,我不确定将私有(private)变量放在哪里以便可以从公共(public)函数访问它们。

将它放在 extend()ed 对象中似乎很明显,但是从同一对象的函数内部无法访问该变量,可能是因为 Ember 不 bind() 将父对象绑定(bind)到函数。

这是我如何存储数组的示例,以便我可以推断出我的 RESTAdapter 是否应该重新加载之前请求过的记录:

shouldReloadRecord: function(store, snapArray) {

window.recordHashStore = window.recordHashStore || [];
let recordHash = `${snapArray.modelName}/${snapArray.id}?include=${snapArray.include}`;
if (!~window.recordHashStore.indexOf(recordHash)) {
window.recordHashStore.push(recordHash);
console.log('Reloading', snapArray.type);
return true;
}
else {
console.log('NOT reloading', snapArray.type);
return false;
}
}

这里的相关代码是window.recordHashStore = window.recordHashStore || []。这正是我想要的,但它看起来不太像 Ember'y。此外,使用 window 全局范围也不好。在浏览器中的应用程序运行期间,我可以在哪里存储私有(private)变量,以便它可用并且不会在转换时被覆盖?

最佳答案

这听起来像是 Ember.Service 的一个很好的用例.服务本质上是一个单例,但它不会在您的 window/global 范围内公开。它也不受路由转换的影响(除非您有在路由转换上操作服务的代码)。

您可以将服务注入(inject) RESTAdapter,并将状态存储在服务中。

关于javascript - 在 Ember RESTAdapter 中存储持久变量的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38755804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com