我知道在npm / bower上有另一个名为angular-cache的库。但是添加一个新库是我工作的一个过程。所以我想使用$ cacheFactory或核心Javascript函数来解决这个问题。
我在stackoverflow中看到很多响应来获取hasmap的所有键,所以我尝试了这个:
(?:X|H)TML Parser
控制台上的输出很奇怪。它们是$ cacheFactory中的函数名称(remove,destroy,info等。)
答案 0 :(得分:2)
没有内置的方法列出$cacheFactory
实例中的所有密钥,而且no plans to include this to the core library,所以您必须使用angular-cache库等替换或添加这些方法由你自己。我需要将这个功能添加到我的$ http缓存中,我找不到干净利落的方法(使用装饰器或其他东西)所以我不得不在我的.run()
块中使用猴子修补它:
// create a new $cacheFactory instance
var httpWithKeysCacheFactory = $cacheFactory('$httpWithKeys'),
// save the original put() method
originalPut = httpWithKeysCacheFactory.put;
// add a property to hold cache keys
httpWithKeysCacheFactory.keys = [];
// overwrite put() with a custom method
httpWithKeysCacheFactory.put = function (key, value) {
// call original put() and save the key
if (originalPut(key, value)) {
this.keys.push(key);
}
};
// tell $http to use your monkey-patched cache factory
$http.defaults.cache = httpWithKeysCacheFactory;
这样做让我可以从控制器访问我的缓存键,如下所示:
$cacheFactory.get('$httpWithKeys').keys;
注意:这是一种非常天真的方法,它不会检查密钥重复项,也不会修改remove()
和removeAll()
方法,以便在从缓存中删除条目时更新密钥。
答案 1 :(得分:0)
您可以使用此模块:angular-cache
所以你可以使用这个CacheFactory.keys()来返回你注册的缓存的所有id