我尝试将模板加载到模块的运行块中的$templateCache
,如下所示。
angular.module('myapp').run(function($http, $templateCache, $timeout) {
var templateLocation = 'location/to/template.html';
$http.get(templateLocation).them(function(response) {
$templateCache.put(templateLocation, response.data);
)};
}
这会将模板加载到templateCache中。但是,当我尝试在指令中使用它时。它没有加载,因为指令在$http
承诺得到解决之前加载。
这是指令
的代码angular.module('myApp').directive('myDirective, directiveFn);
directiveFn.$inject = ["$templateCache"]
function directiveFn($templateCache) {
var templateLocation = 'location/to/template.html';
return {
restrict: 'EA'
scope: {
thing1: "="
}
template: $templateCache.get(templateLocation)
}
}
有更好的方法/地方吗?
答案 0 :(得分:1)
如何在指令中使用$templateRequest
?
我在启动指令时使用它来加载模板,这允许我在指令中使用模板HTML。
我正在使用Typescript,而我的$ templateRequest是对我的指令类的依赖,这就是为什么它在这个范围内。
this.$templateRequest( 'client/lib/directives/aTemplate.html' ).then( ( html ) => {
... do something
} );
快速查看告诉我您也可以将它与templatecache一起使用。这个主题讨论了一些: https://github.com/angular/angular.js/issues/10630