angularjs – 在某些操作后强制Angular清理$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’);

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

最佳答案 根据文档,$cacheFactory(‘name’)返回一个新的缓存对象.如果你想让缓存对象调用它的removeAll方法,写下这样的东西:

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

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

点赞