我的控制器中有以下代码段:
var cache = $cacheFactory('contacts');
var data = cache.get('contacts');
if(!data) {
Contacts.get()
.success(function(result) {
data = result;
cache.put('contacts', data);
});
}
我的Contacts.get()
调用返回152KB的数据,并且需要大约1.5秒才能运行。我试图缓存这些数据,因为它不需要是最新的。
但是,每次刷新HTTP呼叫时,仍然会进行,并且我在控制台中看到undefined
无法记录cache.get('contacts')
和data
。
如何缓存从HTTP调用返回的数据并在范围内引用它?
答案 0 :(得分:2)
您的数据如何?如果它是一个json对象,只需在缓存它之前尝试对其进行字符串化,例如
cache.put('contacts', JSON.stringify(data));
----更新----
您不能使用$ cacheFactory来保存数据。 $ cacheFactory不会在会话上持久存在,并且只应用于会话内持久性,您正在寻找的是localStorage。有很多很好的库可以轻松地将localStorage与angular(例如https://github.com/grevory/angular-local-storage)
集成在一起