Rumah >hujung hadapan web >tutorial js >Penjelasan terperinci tentang suntikan pergantungan dalam Angularjs_AngularJS

Penjelasan terperinci tentang suntikan pergantungan dalam Angularjs_AngularJS

WBOY
WBOYasal
2016-05-16 15:11:111360semak imbas

Biasanya terdapat tiga cara untuk objek mendapatkan kawalan ke atas kebergantungannya:

  • Buat kebergantungan secara dalaman;
  • Dirujuk melalui pembolehubah global;
  • Pas parameter jika perlu
  • Suntikan kebergantungan dilaksanakan melalui cara ketiga. Contohnya:

SomeClass boleh mengakses penyambut dalaman pada masa jalanan, tetapi ia tidak mengambil berat tentang cara mendapatkan rujukan kepada penyambut.
Untuk mendapatkan rujukan kepada contoh penyambut, pencipta SomeClass bertanggungjawab untuk membina kebergantungannya dan menyerahkannya.
function SomeClass(greeter) {
this.greeter = greeter;
}
SomeClass.prototype.greetName = function(name) {
this.greeter.greet(name);
};
Berdasarkan sebab di atas, AngularJS menggunakan $injetor (perkhidmatan penyuntik) untuk mengurus pertanyaan pergantungan dan instantiasi.

Malah, $injetor bertanggungjawab untuk membuat seketika semua komponen dalam AngularJS, termasuk modul aplikasi, arahan dan pengawal.

Sebagai contoh, kod berikut. Ini adalah aplikasi mudah yang mengisytiharkan modul dan pengawal:



Apabila AngularJS membuat instantiate modul ini, ia akan mencari penyambut dan secara semula jadi memberikan rujukan kepadanya:
angular.module('myApp', [])
.factory('greeter', function() {
return {
greet: function(msg) {alert(msg);}
}
})
.controller('MyController',
function($scope, greeter) {
$scope.sayHello = function() {
greeter.greet("Hello!");
};
});

Secara dalaman, proses pemprosesan AngularJS adalah seperti berikut:
<div ng-app="myApp">
<div ng-controller="MyController">
<button ng-click="sayHello()">Hello</button>
</div>
</div>

Di atas adalah keseluruhan kandungan artikel ini, saya harap artikel ini dapat membantu semua orang yang mempelajari suntikan pergantungan Angularjs.
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn