为什么templateCache不能在角度js工作?

时间:2015-12-24 06:21:14

标签: javascript angularjs angularjs-directive angularjs-scope

当我使用 $ templateCache.get()进行控制时,我试图使用$ templateCache.But它给我未定义..为什么?

http://plnkr.co/edit/MAXQmzTVR8fpsw645rct?p=preview

<script>
      angular.module('app',[ ]).directive('h',function($templateCache){
        console.log($templateCache.get('about.html'))
        var element=angular.element('<input type="text" ng-model="message"><div>{{message}}</div>');
       return { restrict:'E',
        scope:{},
        templateUrl:'a.html',replace:true,
        transclude:true,
        compile:function(tElement){
          tElement.append(element);
          return function(s,e,a){
            s.$watch('message',function(val){
             // console.log('------'+val)
            })
          }
        }


       }
      })
    </script>



        **console.log($templateCache.get('about.html'))** give me undefined why ?

2 个答案:

答案 0 :(得分:1)

因为当前您在注册该指令时正在运行该语句。那个时间$templateCache没有模板。 您需要将该行放在指令compile函数中,然后才能获得数据。

答案 1 :(得分:0)

看到这个问题,我认为这应该可以帮到你

Angular Tabs render templates with caching in "ng-include src"

模板加载在模板缓存中以便快速检索。 您可以直接通过$ templateCache服务加载模板。

angular.module('app', []).run(function($templateCache) {
  $templateCache.put('a.html');
});

要检索只需在HTML中使用

<div ng-include=" 'a.html' "></div>

$templateCache.get('a.html')