所以我有一个简单的工厂,可以创建缓存对象
.factory('jsonCache',function($cacheFactory){
console.log("Creating cache");
return $cacheFactory('weatherCache');
});
然后我在控制器中调用缓存对象,就像这样传递它一样。但由于某种原因,数据并不持久。每次重新加载页面时,缓存都会再次为空。
有什么想法吗?我错过了什么吗?
.controller('citiesListCtrl',function($scope,$http,$filter,jsonCache){
jsonCache.get('weatherCache');
console.log(jsonCache); <----- EMPTY
$http.get(url)
.then(function(response) {
jsonCache.put('weatherCache', response.data.records);
console.log(jsonCache); <--- HAS DATA
});
)}
答案 0 :(得分:1)
数据不是持久的,原因很简单:$cacheFactory
缓存只不过是普通JS对象的瘦包装。
您可以检查the source以确保该服务除了简单的LRU算法之外什么都不做。
对于数据持久性,使用持久存储(可能是angular-local-storage或angular-localForage)。 angular-cache
是内置$cacheFactory
that supports persistence的另一种替代品。