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