私はこの機能についていくつかの疑問を持っています。
このディレクティブがあるとしましょう:
.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()
Compile のPreLink()
and を使用する必要がありPostLink()
ますか?