/ / Wie man Objekt zwischen Direktiven AngularJS übergibt? - javascript, angularjs, angularjs-Anweisung, angularjs-scope

Wie man Objekt zwischen Direktiven AngularJS übergibt? - javascript, angularjs, angularjs-Anweisung, angularjs-scope

Wenn ich ein Objekt definiere / instanziiere foo innerhalb der Link-Funktion der Direktive A. Was ist ein Weg, um von der Link-Funktion einer separaten Direktive auf dasselbe Objekt zuzugreifen?

Antworten:

2 für die Antwort № 1

Zitat aus Dokumentation:

Der Controller wird instanziiert vor demPre-Linking-Phase und es ist mit anderen Direktiven geteilt (siehe Attribut require). Dies ermöglicht die Direktiven, miteinander zu kommunizieren und sich zu vermehren "s Verhalten.

Dies bedeutet, dass, um Daten zwischen zwei Direktiven auf dem gleichen Objekt oder seinen Kindern zu teilen, Sie foo innerhalb der Anweisung A-Controller, mit injiziert werden müssen require Option in der Direktive B.

Die Richtlinien würden so aussehen:

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

Arbeitsbeispiel.


0 für die Antwort № 2

Ich habe nicht genug Reputation, um sie zu kommentieren, also füge ich sie hier hinzu.

Einige zusätzliche Informationen für jemanden, der mit demselben Problem kämpft. Es hängt davon ab, wo die Richtlinien in Bezug aufeinander verwendet werden.

Das Präfix ^ bedeutet, dass diese Anweisung nach dem Controller sucht seine Eltern (ohne das Präfix ^ würde die Direktive nach dem Controller auf nur ein eigenes Element).