我对这个功能有一些疑问。
让我说我有这个指令:
.directive('hello',function () { return { template: '<div>Hello <span ng-transclude></span></div>',restrict: 'E',transclude: true,compile: function() { console.log('Compile()'); return { pre: function() { console.log('PreLink()'); },post: function() { console.log('PostLink()'); } }; },link: function postLink(scope,element,attrs) { console.log('Link()'); } }; }
我把它添加到我的模板:
<hello>World</hello>
控制台日志:
Compile() PreLink() PostLink()
那么为什么不调用link()呢?
如果不是从compile()返回一个对象,我返回一个单一的函数打印PreLink()控制台日志:
Compile() PreLink()
如果我不从Compile()返回任何东西的控制台日志:
Compile()
仍未链接()。
如果我只是评论Compile(),然后Link()终于打印:
Link()
有人可以解释这一切吗? Link()和Compile()是否一起工作?我应该使用Compile的PreLink()和PostLink()?