因为每个部分模板都被缓存,我不想要这样做
.directive('myMessages', [ function () {
return {
restrict : 'E',
templateUrl : 'wwwroot/base/messages/ui.partial.messages.show.html?v' + Date.now(),
是否可以全局覆盖templateUrl
函数并在结尾添加日期?
我也从论坛中尝试了这两个解决方案,但它们从未被触发:
$rootScope.$on('$routeChangeStart', function(event, next, current) {
$templateCache.remove(current.templateUrl);
});
$rootScope.$on('$viewContentLoaded', function() {
$templateCache.removeAll();
});
答案 0 :(得分:1)
如果我没错,你试图在每一页的顶部使用你的指令作为横幅。
如果你可以说服你的后端给你一个JSON而不是部分HTML,那将是最好的,但我知道并不总是会发生这种情况。
我建议使用$http.get
并将其加载到指令中,而不是使用templateUrl来实现这一点。
.directive('myMessages', [ function () {
return {
restrict : 'E',
template : '<div></div>',
link: function(scope, element, attrs){
$http.get('wwwroot/base/messages/ui.partial.messages.show.html?v' + Date.now()).then(function(response.data) {
// if your html contains angular syntax, use $compile
element.html(response.data);
$compile(element.contents())(scope);
// if your html doesn't contain angular syntax, use $sce
// your template needs to be <div ng-bind-html="message"></div>
scope.message = $sce.trustAsHtml(response.data);
});
}
}
]);