Saya agak keliru apabila saya baru menggunakan Angular Ambil fungsi pengawal berikut sebagai contoh
function hello($scope) {
$scope.name = '张三'
}
Ini ialah pengisytiharan fungsi, $scope sepatutnya menjadi parameter rasmi, bukan? Tetapi menukar $scope kepada pengecam lain seperti s tidak akan berfungsi. Ia boleh dilihat bahawa $scope ialah parameter sebenar yang diluluskan apabila fungsi hello dipanggil. Tetapi ketiga-tiga baris kod ini ialah pengisytiharan fungsi, jadi mengapa parameter sebenar diluluskan?
Saya mungkin menyedari bahawa ini bukan pengisytiharan fungsi biasa Mungkin ia ada kaitan dengan mekanisme pengikatan fungsi pengawal Angular? Apa sebenarnya rupanya?
Parameter lulus jenis ini untuk mendapatkan kebergantungan ialah ciri utama AngularJS - salah satu manifestasi suntikan kebergantungan.
Tetapi mengapa kita boleh mendapatkan kebergantungan dengan hanya mengisytiharkan parameter?
AngularJS menggunakan
$injector
untuk mengurus pertanyaan dan pemuatan bergantung, sepertiJika tiada pengisytiharan yang jelas,
$injector
menyimpulkan kebergantungan berdasarkan nama parameter Pada masa ini, susunan parameter tidak bermakna.Dengan kata lain, kita juga boleh mengisytiharkan seperti ini:
Nah, perkara ini hanyalah pengisytiharan fungsi di mana ia ditulis sama ada nama parameter formal adalah penting diputuskan sepenuhnya oleh pembaca Penghurai standard ECMAScript tidak menganggapnya penting (saya rasa), tetapi Angular menulisnya dalam js. . . Dengan cara ini, nama parameter fungsi adalah penting
http://note.sdo.com/u/635412003927148913/n/s6cBN~lcIHwG4M1-Y000LW