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

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

然后在$ http回调中,我们以这种方式保存数据以进行下拉
cache.put('dataForDropDown', data);

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

因此,在带有下拉菜单的页面上,我们需要将调用再次发送到服务器。为此,我们需要在更改语言后清除缓存。

我们该怎么做?

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



但这是行不通的。它说名称为dataForDropDown的缓存已经创建。我不明白我在做什么错

最佳答案

根据文档,$cacheFactory('name')返回一个新的缓存对象。如果要获取缓存对象以调用其removeAll方法,请编写以下内容:

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

这会将工厂注册到您的模块。工厂superCache包含缓存对象。您可以通过调用removeAll方法清除它。或者,您可以使用remove(key)方法从缓存中删除特定项目,并且该项目可以在 Controller 和服务中注入(inject)(就像其他 angular.factory 一样)。

关于angularjs - 某些操作后强制Angular清理$ cacheFactory,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32449388/

10-13 00:31