5

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

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 的缓存。我不明白我做错了什么

4

1 回答 1

2

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

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

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

于 2015-09-08T04:50:46.797 回答