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 № 1Citazione 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"
}
})
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).