/ / Come passare oggetto tra le direttive AngularJS? - javascript, angularjs, direttiva angularjs, angularjs-scope

Come passare oggetto tra le direttive AngularJS? - javascript, angularjs, direttiva angularjs, angularjs-scope

Se definisco / istanzia un oggetto foo all'interno della funzione di collegamento della direttiva A. Qual è un modo per accedere allo stesso oggetto dalla funzione di collegamento di una direttiva separata?

risposte:

2 per risposta № 1

Citazione da documenation:

Il controller viene istanziato prima delfase di pre-collegamento ed è condiviso con altre direttive (vedi richiedere attributo). Questo permette al direttive per comunicare tra loro e aumentarsi a vicenda " comportamento.

Ciò significa che per condividere i dati tra due direttive sullo stesso oggetto o sui suoi figli, è necessario esporre foo all'interno del controller di direttiva A, iniettato con require opzione nella direttiva B.

Le direttive apparirebbero così:

.directive("dirA", function () {
return {
controller: function ($scope, $element, $attrs) {

},
link: function ($scope, $element, $attrs, controller) {
controller.foo = $attrs.dirA;
}
}
})
.directive("dirB", function () {
return {
link: function ($scope, $el, $attr, controller) {
$scope.shared = controller.foo;
},
require: "dirA"
}
})

Esempio di lavoro.


0 per risposta № 2

Non ho abbastanza reputazione per commentare, quindi lo aggiungerò qui.

Alcune informazioni aggiuntive per qualcuno alle prese con lo stesso problema. Dipende da dove vengono utilizzate le direttive in relazione l'una con l'altra.

Il prefisso ^ indica che questa direttiva cerca il controller attivo i suoi genitori (senza il prefisso ^, la direttiva cercherebbe il controller su proprio proprio elemento).