我通过$ routeProvider建立路由,类似于
$routeProvider.when('/page/:id',
{templateUrl: 'partials/public/view/page.html', controller: XYZ});
在第一页加载时,我想迭代缓存的部分并删除它们。最初我尝试过:
$templateCache.removeAll()
首次创建父控制器(在整个body元素上声明)时调用 - 也就是页面加载。这似乎工作,但一些第三方插件(指令)然后抛出错误
Error: Failed to load template: template/tabs/tab.html
我知道我可以使用$ templateCache.remove(key)一次删除一个部分缓存,但我不喜欢在某些自定义清除函数中硬编码所有部分键的想法。相反,我想得到所有缓存的部分,如果键以某个字符串开头,则将其删除。我的问题是,有没有办法迭代所有缓存的部分?
答案 0 :(得分:1)
我认为没有一种简单的方法来迭代$ templateCache。仅供参考,我在使用Angular的UI Bootstrap时遇到了错误。解决此错误的一种简短方法是在更改路由时删除新的缓存条目,而不是删除所有条目:
...
app.run(function($rootScope, $templateCache) {
$rootScope.$on('$routeChangeStart', function(event, next, current) {
if (typeof(current) !== 'undefined'){
$templateCache.remove(current.templateUrl);
}
});
});