Wie kann eine im untergeordneten Bereich definierte Methode aus dem übergeordneten Bereich aufgerufen werden?
function ParentCntl() {
// I want to call the $scope.get here
}
function ChildCntl($scope) {
$scope.get = function() {
return "LOL";
}
}
angularjs
angularjs-scope
9blue
quelle
quelle
Antworten:
Sie können
$broadcast
vom Elternteil zum Kind verwenden:Arbeitsgeige: http://jsfiddle.net/wUPdW/2/
UPDATE : Es gibt eine andere Version, die weniger gekoppelt und besser testbar ist:
Geige: http://jsfiddle.net/uypo360u/
quelle
$scope.$parent
oder in$scope.$parent.$parent
usw.)? Ah ja: Übergeben Sie einen Rückruf in params! :)$emit
vom Kind zum Elternteil. Ich denke, es ist eine Zeit, meine Antwort zu aktualisieren ..$parent
)$broadcast
und Sie können diepingBack
insgesamt beseitigen .Lassen Sie mich eine andere Lösung vorschlagen:
Weniger Code und prototypische Vererbung.
Zupfen
quelle
$scope.obj.get()
eine gültige Funktion vorliegt.Registrieren Sie die Funktion des Kindes beim Elternteil, wenn das Kind initialisiert wird. Ich habe aus Gründen der Übersichtlichkeit in der Vorlage die Notation "als" verwendet.
VORLAGE
CONTROLLER
"Aber", sagen Sie, "
ng-init
soll nicht so verwendet werden !". Na ja, aberIch sage, das ist eine gute Verwendung dafür. Wenn Sie mich ablehnen möchten, kommentieren Sie bitte mit Gründen! :) :)
Ich mag diesen Ansatz, weil er die Komponenten modularer hält. Die einzigen Bindungen befinden sich in der Vorlage und bedeuten dies
Dieser Ansatz nähert sich Teros Idee der Modularisierung mit Direktiven näher an (beachten Sie, dass in seinem modularisierten Beispiel die
contestants
Anweisung IN DER VORLAGE von der übergeordneten zur "untergeordneten" Direktive übergeben wird).In der Tat könnte eine andere Lösung darin bestehen, die Implementierung der
ChildCntl
Richtlinie in Betracht zu ziehen und die&
Bindung zur Registrierung derinit
Methode zu verwenden.quelle
Sie können ein untergeordnetes Objekt erstellen.
Hier beweist das Kind das Ziel der Get-Methode.
quelle