AngularJS指令templateUrl不会更新

时间:2014-07-04 16:04:46

标签: javascript angularjs angularjs-directive

我有角度指令的问题。当我编辑通过templateUrl引用的文件的内容时,直到我删除缓存后才会显示结果。我有以下代码:

Directive.js

.directive('appMainsec',['$window', function ($window){
    var objectMainSec = {
        restrict: 'A',
        templateUrl: 'partials/app-mainsec.html',
        controller: function (){},
        controllerAs: 'MainSectCtrl',
        link: function ($scope,elemnt,attr){
            elemnt.css('height', ($window.innerHeight - ($window.innerHeight * .25)) + 'px');
        }
    };

    return objectMainSec;
}]);

APP-mainsec.html

<div><h1>Principal</h1></div>

和index.html

...
 <div app-mainsec></div>
...

当我将<h1>Hi</h1>更改为<h1>Hello</h1>时,指令视图在删除缓存之前不会更新。

1 个答案:

答案 0 :(得分:7)

原因是Angular在开始时只获取一次文件。您可以尝试将templateUrl用作函数并附加时间戳,以便每次都获得新的模板URL。

templateUrl: function() {
    return 'partials/app-mainsec.html?' + +new Date();
}

但可能只有在编译指令时才会刷新你的指令。