Apa lagi yang terjadi antara pemanggilan fungsi ini?
Berbagai fungsi direktif dijalankan dari dalam dua fungsi sudut lain yang disebut $compile(di mana direktif compiledijalankan) dan fungsi internal disebut nodeLinkFn(di mana direktif controller, preLinkdan postLinkdijalankan). Berbagai hal terjadi dalam fungsi sudut sebelum dan sesudah fungsi direktif dipanggil. Mungkin yang paling menonjol adalah rekursi anak. Ilustrasi sederhana berikut ini menunjukkan langkah-langkah utama dalam fase kompilasi dan tautan:

Untuk mendemonstrasikan langkah-langkah ini, mari gunakan markup HTML berikut:
<div ng-repeat="i in [0,1,2]">
<my-element>
<div>Inner content</div>
</my-element>
</div>
Dengan arahan berikut:
myApp.directive( 'myElement', function() {
return {
restrict: 'EA',
transclude: true,
template: '<div>{{label}}<div ng-transclude></div></div>'
}
});
Menyusun
The compileAPI terlihat seperti begitu:
compile: function compile( tElement, tAttributes ) { ... }
Seringkali parameter diawali dengan tuntuk menandakan elemen dan atribut yang disediakan adalah orang-orang dari templat sumber, bukan dari contoh.
Sebelum panggilan ke compilekonten yang ditransklusikan (jika ada) dihapus, dan templat diterapkan ke markup. Dengan demikian, elemen yang disediakan untuk compilefungsi akan terlihat seperti ini:
<my-element>
<div>
"{{label}}"
<div ng-transclude></div>
</div>
</my-element>
Perhatikan bahwa konten yang ditransklusikan tidak dimasukkan kembali pada saat ini.
Mengikuti panggilan ke arahan .compile, Angular akan melintasi semua elemen anak, termasuk yang mungkin baru saja diperkenalkan oleh arahan (elemen template, misalnya).
Pembuatan instance
Dalam kasus kami, tiga contoh templat sumber di atas akan dibuat (oleh ng-repeat). Dengan demikian, urutan berikut akan dieksekusi tiga kali, sekali per instance.
Pengendali
The controllerAPI melibatkan:
controller: function( $scope, $element, $attrs, $transclude ) { ... }
Memasuki fase tautan, fungsi tautan yang dikembalikan via $compilesekarang disediakan dengan cakupan.
Pertama, fungsi tautan membuat lingkup anak ( scope: true) atau lingkup terisolasi ( scope: {...}) jika diminta.
Kontroler kemudian dieksekusi, disediakan dengan cakupan elemen instance.
Pra-tautan
The pre-linkAPI terlihat seperti begitu:
function preLink( scope, element, attributes, controller ) { ... }
Sebenarnya tidak ada yang terjadi antara panggilan ke direktif .controllerdan .preLinkfungsi. Angular masih memberikan rekomendasi bagaimana masing-masing harus digunakan.
Setelah .preLinkpanggilan, fungsi tautan akan melintasi setiap elemen anak - memanggil fungsi tautan yang benar dan melampirkan padanya lingkup saat ini (yang berfungsi sebagai lingkup induk untuk elemen anak).
Posting-tautan
The post-linkAPI mirip dengan yang dari pre-linkfungsi:
function postLink( scope, element, attributes, controller ) { ... }
Mungkin perlu diperhatikan bahwa sekali .postLinkfungsi direktif dipanggil, proses penghubung semua elemen anak-anaknya telah selesai, termasuk semua fungsi anak-anak .postLink.
Ini berarti bahwa pada saat .postLinkdipanggil, anak-anak sudah 'hidup' sudah siap. Ini termasuk:
- pengikatan data
- transklusi diterapkan
- ruang lingkup terlampir
Template pada tahap ini akan terlihat seperti ini:
<my-element>
<div class="ng-binding">
"{{label}}"
<div ng-transclude>
<div class="ng-scope">Inner content</div>
</div>
</div>
</my-element>