我正在使用$资源并缓存获取请求的结果.我的问题是,在发布请求后,缓存不会被无效.
以下是服务的返回值:
return $resource('http://url.com/api/url/:id',{},{ 'query' : { method : 'GET',isArray:true,cache : true },'get' : { method : 'GET',cache : false } })
这是我在控制器内使用的保存方法.正如你所看到的,我在post请求中使用回调来重新计算名词的查询/列表.
var newNoun = new Noun($scope.noun); newNoun.$save(function(x) { $scope.nouns = Noun.query(); });
您可以创建一个包装服务来执行您想要的缓存,例如:
app.factory('cachedResource',function ($resource,$cacheFactory) { var cache = $cacheFactory('resourceCache'); var interceptor = { response: function (response) { cache.remove(response.config.url); console.log('cache removed',response.config.url); return response; } }; return function (url,paramDefaults,actions,options) { actions = angular.extend({},{ 'get': { method: 'GET',cache: cache },'query': { method: 'GET',cache: cache,isArray: true },'save': { method: 'POST',interceptor: interceptor },'remove': { method: 'DELETE','delete': { method: 'DELETE',}); return $resource(url,options); }; });
然后用cachedResource替换任何$资源.