angularjs – 发送请求后$资源缓存无效

前端之家收集整理的这篇文章主要介绍了angularjs – 发送请求后$资源缓存无效前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用$资源并缓存获取请求的结果.我的问题是,在发布请求后,缓存不会被无效.

以下是服务的返回值:

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();
});

我想在调用post或者另一个get-get方法后使缓存无效.我该怎么做?这是否已经内置到$资源中,还是需要自己实现?

您可以创建一个包装服务来执行您想要的缓存,例如:
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替换任何$资源.

示例代码http://plnkr.co/edit/lIQw4uogcoMpcuHTWy2U?p=preview

猜你在找的Angularjs相关文章