Ich habe zwei Controller, einen in einen anderen gewickelt. Jetzt weiß ich, dass der untergeordnete Bereich Eigenschaften vom übergeordneten Bereich erbt. Gibt es jedoch eine Möglichkeit, die übergeordnete Bereichsvariable zu aktualisieren? Bisher habe ich keine offensichtlichen Lösungen gefunden.
In meiner Situation habe ich einen Kalender-Controller in einem Formular. Ich möchte die Start- und Enddaten aus dem übergeordneten Bereich (dem Formular) so aktualisieren, dass das Formular beim Senden die Start- und Enddaten enthält.
Antworten:
Sie müssen ein Objekt (kein Grundelement) im übergeordneten Bereich verwenden, und dann können Sie es direkt aus dem untergeordneten Bereich aktualisieren
Elternteil:
Kind:
Arbeitsdemo : http://jsfiddle.net/sh0ber/xxNxj/
Siehe Was sind die Nuancen der prototypischen / prototypischen Vererbung von Scope in AngularJS?
quelle
Es gibt noch eine Möglichkeit, diese Aufgabe auszuführen und die
$scope.$parent
Variable nicht zu verwenden .Bereiten Sie einfach eine Methode zum Ändern des Werts im übergeordneten Bereich vor und verwenden Sie sie im untergeordneten Bereich. So was:
Es funktioniert auch und gibt Ihnen mehr Kontrolle über die Wertänderungen.
Sie können die Methode dann auch in HTML wie folgt aufrufen :
<a ng-click="changeSimpleValue('y')" href="#">click me!</a>
.quelle
Dies funktioniert auch (aber nicht sicher, ob dies der Best Practice entspricht oder nicht)
quelle
Wenn Sie einem Bereich ein primitives Attribut zuweisen, ist es immer lokal für den Bereich (möglicherweise im laufenden Betrieb erstellt), auch wenn ein übergeordneter Bereich ein Attribut mit demselben Namen hat. Dies ist eine Designentscheidung und meiner Meinung nach eine gute.
Wenn Sie in der Ansicht ein Grundelement (Ints, Boolesche Werte, Zeichenfolgen) im übergeordneten Bereich ändern müssen, muss es ein Attribut eines anderen Objekts in diesem Bereich sein, damit die Zuweisung möglicherweise lautet:
und es wird wiederum:
viewData
Objekt aus dem Bereich, in dem es definiert istmyAttr
Attribut 4 zu .quelle
Für den Zugriff auf im übergeordneten Element deklarierte Variablen sollten wir $ parent im untergeordneten Controller oder in der Vorlagendatei verwenden
In der Steuerung
In HTML-Vorlage
quelle