因此,我们以这种方式从下拉资源模块中的下拉缓存值
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)方法从缓存中删除特定项,并且它可以在控制器和服务中注入(如其他角度工厂).