Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务调用后删除缓存_Javascript_Angularjs_Caching - Fatal编程技术网

Javascript 服务调用后删除缓存

Javascript 服务调用后删除缓存,javascript,angularjs,caching,Javascript,Angularjs,Caching,所以我有两种服务方式。我正在使用$resource的内置缓存支持。我想要实现的是当我从控制器发出一些服务调用以刷新缓存时。我尝试了一些使用$cacheResource的示例,但没有成功。下面是我的代码 服务 angular.module('module').factory('Service1',['$resource', function ($resource){ return $resource('..api/latest/myservice', {}, { t

所以我有两种服务方式。我正在使用$resource的内置缓存支持。我想要实现的是当我从控制器发出一些服务调用以刷新缓存时。我尝试了一些使用$cacheResource的示例,但没有成功。下面是我的代码

服务

angular.module('module').factory('Service1',['$resource',
   function ($resource){
     return $resource('..api/latest/myservice', {}, {

       takeSomething: {
         method: 'GET',
         url: '..api/latest/myservice/takesomething',
        cache: true
       },

       putSomething: {
         method: 'GET',
         url: '..api/latest/myservice/putsomething',
         cache: true
       }

      }
}]
控制器

angular.module('module').factory('MyController',['$scope','Service1',
     function($scope, service1) {
       ....

     $scope.update = function() {
       service1.putSomething({
       ......
       refresh cache for takeSomething method in service or for all methods
     });
     }

}

因此,当我从控制器调用这个函数update时,我想刷新takeSomething方法或所有方法的缓存。

您可以使用
$cacheFactory
获得默认的
$http
缓存;这将有一个
remove
方法来执行您想要的操作

您需要将
$cacheFactory
注入到您计划在
$scope.update
中使用它的任何位置,或者您可以将它移动到您的服务中

var $httpDefaultCache = $cacheFactory.get('$http');

$httpDefaultCache.remove('..api/latest/myservice/takesomething');

您可以使用
$cacheFactory
获取默认的
$http
缓存;这将有一个
remove
方法来执行您想要的操作

您需要将
$cacheFactory
注入到您计划在
$scope.update
中使用它的任何位置,或者您可以将它移动到您的服务中

var $httpDefaultCache = $cacheFactory.get('$http');

$httpDefaultCache.remove('..api/latest/myservice/takesomething');

缓存:false
?是否希望缓存值是动态的?你们希望每个api调用都不一样吗?好吧,我希望是cache:true,因为我正在将它用于来自控制器的其他调用。但只有通过控制器的此调用,我才想刷新缓存。是否将
true/false
值存储在
service scope
中的全局变量中,并使用
service
中的另一种方法更新该全局变量?听起来不错?嗯。。。那么什么是最好的方法呢?我在从Apache2服务器获取一些JSON时遇到了类似的问题,并且在获取新的JSON时总是遇到问题。我解决了将currentTime附加到$http GET请求的问题。
cache:false
?是否希望缓存值是动态的?你们希望每个api调用都不一样吗?好吧,我希望是cache:true,因为我正在将它用于来自控制器的其他调用。但只有通过控制器的此调用,我才想刷新缓存。是否将
true/false
值存储在
service scope
中的全局变量中,并使用
service
中的另一种方法更新该全局变量?听起来不错?嗯。。。那么什么是最好的方法呢?我在从Apache2服务器获取一些JSON时遇到了类似的问题,并且在获取新的JSON时总是遇到问题。我解决了将currentTime附加到$http GET请求的问题。