所以我们以这种方式从下拉资源模块中的下拉缓存值
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的缓存。我无法理解我做错了什么
答案 0 :(得分:2)
根据文档,$cacheFactory('name')
返回一个新的缓存对象。如果你想让缓存对象调用它的removeAll
方法,可以这样写:
angular.module('superCache')
.factory('superCache', ['$cacheFactory', function($cacheFactory) {
return $cacheFactory('super-cache');
}]);
这会将工厂注册到您的模块。工厂superCache
包含缓存对象。您可以通过调用removeAll
方法清除它。或者您可以使用remove(key)
方法从缓存中删除特定项目,并且它可以在控制器和服务中注入(如其他角度工厂)。