我对这个功能有一些疑问。
可以说我有这个指令:
.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()
仍然link()
没有被调用。
如果我只是评论Compile()
然后Link()
最终打印:
Link()
有人可以解释这一切吗?是否愿意Link()
一起Compile()
工作?我应该只使用编译的PreLink()
和PostLink()
吗?