我正在尝试加载不同的模板,
<div ng-class="{active:$first,in:$first,'tab-pane':true}" id="{{p.path}}_settings" ng-repeat="p in panes" ng-include="buildPath(p.path)">
</div>
和控制器,
$scope.panes = [{
name: 'xxx',
path: 'alarm'
}, {
name: 'yyy',
path: 'scan'
}, {
name: 'zzz',
path: 'client'
}];
$scope.buildPath = function(path) {
return 'templates/partials/settings_' + path + '.html';
}
完美无缺。但现在我想禁用缓存,所以我这样做了,
$scope.buildPath = function(path) {
return 'templates/partials/settings_' + path + '.html?_=' + Date.now();
}
浏览器停在加载一堆重复的页面。
有什么想法吗?这是一个错误
答案 0 :(得分:2)
您可以从缓存中移除前一个(在这种情况下为$templateCache
),而不是生成新的模板网址。
就像注入$templateCache
并使用remove
函数清除以前的网址一样简单:
$scope.buildPath = function(path) {
var url = 'templates/partials/settings_' + path + '.html';
$templateCache.remove(url);
return url;
}
或者,这是一个指令,您也可以使用:
装饰您的div
app.directive('no-cache', ['$templateCache', function($templateCache) {
var directive = {
restrict: 'A',
scope: false,
link: function(scope, element, attrs) {
scope.$parent.$watch(attrs.ngInclude, function(new, old){
$templateCache.remove(old);
});
}
};
return directive;
}]);