我有一个应用程序,它请求REST服务中的可能项目列表。我使用$ http或$ resource。
现在我想在localStorage中缓存这些项目,并且只是偶尔将我的本地存储与后端同步,以检查是否有任何更改。
所以在我这样做之前:
var getAllPlugs = function () {
var backend = $resource(getURLString() + '/getAllPlugsAvailable');
return backend.query();
};
但现在我希望函数立即返回我的缓存项目,一旦异步http请求完成,它应该更新项目列表,如果有什么变化。这当然应该直接反映在UI
中如果我做这样的事情就会出现问题:
var getAllPlugs = function(){
var backend = $resource(getURLString() + '/getAllPlugsAvailable');
var result = backend.query();
localStorage.setItem("plugs", JSON.stringify(result));
return result
};
我仍然只得到http请求的结果。但是如何实现它,所以我首先得到缓存的,然后该对象将更新更新。也许从我的控制器成功回调传递给调用后端的服务?我需要一些启发,抱歉,如果它是微不足道的......
答案 0 :(得分:0)
从本地存储返回数组。一旦数据来自http,就会替换数组的内容。
var getAllPlugs = function () {
var results = JSON.parse(localStorage["plugs"]);
var backend = $resource(getURLString() + '/getAllPlugsAvailable');
backend.query({}, function(data) {
results.length=0; //clear existing
angular.forEach(data, function(plug) {
results.push(plug);
}
localStorage.setItem("plugs", JSON.stringify(results));
});
return result
};