强制Angular在一些操作后清除$ cacheFactory

时间:2015-09-08 04:41:39

标签: angularjs cachefactory

所以我们以这种方式从下拉资源模块中的下拉缓存值

var cache = new CacheFactory('DropDownResource', {
      maxAge: 3600000,
      deleteOnExpire: 'aggressive',
      capacity: 5,
      storageMode: 'sessionStorage'
    });

然后在$ http回调中,我们以这种方式保存下拉数据

cache.put('dataForDropDown', data);

在其他模块中,我们可以更改用户设置,尤其是更改语言。执行此操作后,我需要清理缓存。因为当用户更改语言并转到带有下拉列表的页面时,他希望看到所需语言的下拉列表。

因此,在带有下拉列表的页面上,我们需要再次向服务器发送呼叫。要做到这一点,我们需要在语言改变后清理缓存。

我们怎么做?

我在下拉模块中尝试此代码。

  

var cache = $ cacheFactory(' dataForDropDown');   cache.remove(' dataForDropDown&#39);

但它不起作用。它表示已经创建了名为dataForDropDown的缓存。我无法理解我做错了什么

1 个答案:

答案 0 :(得分:2)

根据文档,$cacheFactory('name')返回一个新的缓存对象。如果你想让缓存对象调用它的removeAll方法,可以这样写:

angular.module('superCache')
  .factory('superCache', ['$cacheFactory', function($cacheFactory) {
    return $cacheFactory('super-cache');
  }]);

这会将工厂注册到您的模块。工厂superCache包含缓存对象。您可以通过调用removeAll方法清除它。或者您可以使用remove(key)方法从缓存中删除特定项目,并且它可以在控制器和服务中注入(如其他角度工厂)。