AngularJS - 迭代所有缓存的部分

时间:2014-01-14 21:58:42

标签: javascript angularjs caching partials

我通过$ 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)一次删除一个部分缓存,但我不喜欢在某些自定义清除函数中硬编码所有部分键的想法。相反,我想得到所有缓存的部分,如果键以某个字符串开头,则将其删除。我的问题是,有没有办法迭代所有缓存的部分?

1 个答案:

答案 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);
        }
    });
});