当我使用 $ 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 ?
答案 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')