因此,我们以这种方式从下拉资源模块中的下拉缓存值
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/