Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS-迭代所有缓存的部分_Javascript_Angularjs_Caching_Partials - Fatal编程技术网

Javascript AngularJS-迭代所有缓存的部分

Javascript AngularJS-迭代所有缓存的部分,javascript,angularjs,caching,partials,Javascript,Angularjs,Caching,Partials,我已经通过$routeProvider设置了路由,类似于 $routeProvider.when('/page/:id', {templateUrl: 'partials/public/view/page.html', controller: XYZ}); 在第一个页面加载时,我希望遍历缓存的部分并删除它们。最初我尝试过: $templateCache.removeAll() 首次创建父控制器(在整个主体元素上声明)时调用-也称为页面加载。这似乎是可行的,但一些第三方插件(指令)会抛出错误

我已经通过$routeProvider设置了路由,类似于

$routeProvider.when('/page/:id', 
{templateUrl: 'partials/public/view/page.html', controller: XYZ});
在第一个页面加载时,我希望遍历缓存的部分并删除它们。最初我尝试过:

$templateCache.removeAll()
首次创建父控制器(在整个主体元素上声明)时调用-也称为页面加载。这似乎是可行的,但一些第三方插件(指令)会抛出错误

Error: Failed to load template: template/tabs/tab.html

我知道我可以使用$templateCache.remove(key)一次删除一个部分缓存,但我不喜欢在一些自定义清除函数中硬编码所有部分键的想法。相反,我希望获取所有缓存的部分,如果key以某个字符串开头,则将其删除。我的问题是,有没有一种方法可以迭代所有缓存的部分?

我认为没有一种简单的方法可以迭代$templateCache。仅供参考,我在使用Angular的UI引导时发现了您的错误。解决此错误的一个简单方法是在更改路由时删除新缓存项,而不是删除所有项:

...

app.run(function($rootScope, $templateCache) {
    $rootScope.$on('$routeChangeStart', function(event, next, current) {
        if (typeof(current) !== 'undefined'){
            $templateCache.remove(current.templateUrl);
        }
    });
});

为什么要从模板缓存中删除任何内容?我不理解这个用例。因为应用程序已经以某种测试模式部署到服务器上,我仍在推动更改,所以我想确保一旦加载页面,用户将拥有最新信息。当它稳定下来时,我不会太在意它,但现在我确实需要确保避免错误。所以。。。请求其他文件?从缓存中删除这样的内容是有问题的。通过请求不同的文件,您的意思是将URL参数添加到$routeProvider的when()?我不喜欢的一点是,它对存储库来说是一个无用的更改,我需要一些工具在推送之前自动完成它(好吧,一些ant任务可以做到这一点)。但这是可行的。你应该有一种方法来对你的javascript文件进行版本化,以处理缓存破坏,而且这应该是你构建过程的一部分(如果你不这样做,你应该马上做——特别是在你正式上线之前)。我的意思是更改模板url本身。