Angular js使用模板URL

时间:2016-04-09 00:17:44

标签: javascript angularjs angular-templatecache

我尝试将模板加载到模块的运行块中的$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)
    }
}

有更好的方法/地方吗?

1 个答案:

答案 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