Dependency Injection on ohjelmiston suunnittelumalli, joka määrittää tavan, jolla komponentit saavat selville riippuvuutensa. Komponenteille annetaan riippuvuudet kovan koodaamisen sijaan. Uudelleenkäytettävyys ja ylläpidettävyys voidaan saavuttaa riippuvuusinjektiolla. Korkeimman riippuvuuden injektio voidaan tehdä seuraavilla komponenteilla:
Arvon riippuvuuden injektio
Yksinkertainen objekti AngularJs: ssä tunnetaan arvona. Se voi olla merkkijono, numero tai jopa JavaScript-objekti. Sitä voidaan käyttää arvojen välittämiseen tehtaissa, palveluissa tai ohjaimissa ajo- ja määritysvaiheessa.
Esimerkki:
// määritä moduuli
var firstModule = kulmamoduuli ('firstModule', [])
// luoda arvo-objekti ja välittää sille tietoja
firstModule.value ('numberValue', 50)
firstModule.value ('stringValue', 'xyz')
firstModule.value ('objectValue', {val1: 456, val2: 'xyz'})
Tässä esimerkissä arvot määritetään käyttämällä arvo () -funktiota. Ensimmäisen parametrin avulla määritetään arvon nimi, ja toinen parametri määrittää arvon. Tämän avulla tehtaat, palvelut ja ohjaimet voivat viitata näihin arvoihin itse nimellä.
Arvon syöttäminen
Voimme injektoida arvon AngularJs-ohjaintoimintoon lisäämällä parametrin, jolla on sama nimi kuin arvolla.
Esimerkki:
var firstModule = kulmamoduuli ('firstModule', [])
firstModule.value ('numberValue', 18)
firstModule.controller ('FirstController', funktio ($ scope, numberValue) {
console.log (numberValue)
})
Tehtaan injektio
Arvoja luova toiminto tunnetaan tehtaana. Tehdas luo tarpeen mukaan arvon aina, kun palvelu tai ohjain tarvitsee tehtaalta syötetyn arvon. Kun arvo on luotu, sitä käytetään uudelleen kaikissa palveluissa ja ohjaimissa.
Se käyttää tehdasfunktiota arvon laskemiseen ja palauttamiseen.
Esimerkki:
var firstModule = kulmamoduuli ('firstModule', [])
firstModule.factory ('firstFactory', function () {
palauta 'arvo'
})
firstModule.controller ('FirstController', funktio ($ -alue, firstFactory) {
console.log (firstFactory)
})
Arvojen syöttäminen tehtaaseen
Arvo voidaan syöttää tehtaalle seuraavalla menetelmällä:
var firstModule = kulmamoduuli ('firstModule', [])
miten estää umpikujasta java
firstModule.value ('numberValue', 29)
firstModule.controller ('FirstController', funktio ($ scope, numberValue) {
console.log (numberValue)
})
On huomattava, että arvotehdasfunktion tuottama, ei itse tehdasfunktio. Siirrytään tämän artikkelin kanssa riippuvuuden injektiosta AngularJs: ssä.
Huolto-injektio kulmissaJ
Yksittäinen JavaScript-objekti, joka sisältää joukon toimintoja, tunnetaan palveluna AngularJs: ssä. Palvelun suorittamiseen tarvittava logiikka sisältyy toimintoon. Palvelu voidaan luoda käyttämällä moduulin service () -toimintoa.
Esimerkki:
// määritä moduuli
var firstApp = kulmamoduuli ('firstApp', [])
...
// luo palvelu, joka määrittelee menetelmän neliö palauttaa luvun neliön
firstApp.service ('CalciService', funktio (MathService) {
this.neliö = function (x) {
palauta MathService.multiply (x, x)
}
})
// injektoi palvelu 'CalciService' ohjaimeen
firstApp.controller ('CalciController', funktio ($ -alue, CalciService,
defaultInput) {
$ scope.number = defaultInput
$ scope.result = CalciService.square ($ scope.number)
$ scope.square = function () {
$ scope.result = CalciService.square ($ scope.number)
}
})
Palveluntarjoaja
Palveluntarjoajaa käytetään palvelujen tai tehtaan sisäiseen luomiseen määritysvaiheessa. Provider on erityinen tehdasmenetelmä, jossa on get () -toiminto, jota käytetään palauttamaan arvo / palvelu / tehdas.
Esimerkki:
// määritä moduuli
var firstApp = kulmamoduuli ('firstApp', [])
...
// luo palvelu käyttäen palveluntarjoajaa, joka määrittää menetelmän neliön palauttamaan
luvun neliö.
firstApp.config (funktio ($ antaa) {
$ provide.provider ('MathService', funktio () {
tämä. $ get = function () {
var tehdas =
tehdas.multiply = function (x, y) {
palauta x * y
}
palata tehtaalle
}
})
})
Jatkuva
Koska käyttäjä ei voi syöttää arvoja module.config () -funktioon, käytämme vakioita. Vakioita käytetään arvojen välittämiseen konfigurointivaiheessa.
firstApp.constant ('configParam', 'vakioarvo')
Esimerkki:
Edellä mainittuja direktiivejä voidaan käyttää seuraavalla tavalla:
Riippuvuuden injektio
KulmaJS-neliöesimerkki
Syötä mikä tahansa numero:
X2
Tulos: {{result}}
var firstApp = kulmamoduuli ('firstApp', [])
firstApp.config (funktio ($ antaa) {
$ provide.provider ('MathService', funktio () {
tämä. $ get = function () {
var tehdas =
tehdas.multiply = function (x, y) {
palauta x * y
}
palata tehtaalle
}
})
})
löytää matriisin javan suurin elementti
firstApp.value ('defaultInput', 6)
firstApp.factory ('MathService', funktio () {
var tehdas =
tehdas.multiply = function (x, y) {
palauta x * y
}
palata tehtaalle
})
firstApp.service ('CalciService', funktio (MathService) {
this.neliö = function (x) {
palauta MathService.multiply (x, x)
}
})
firstApp.controller ('CalciController', funktio ($ -alue, CalciService, defaultInput) {
$ scope.number = defaultInput
$ scope.result = CalciService.square ($ scope.number)
$ scope.square = function () {
$ scope.result = CalciService.square ($ scope.number)
}
})
LÄHTÖ:
Tämän avulla olemme päättäneet tämän riippuvuusinjektion AngularJs-artikkelissa. C helvetti Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa.
Onko sinulla kysymys meille? Mainitse se tämän riippuvuusinjektion kommenttiosassa AngularJs: ssä, ja palaamme sinuun.