Ich habe 3 Elementen/Tive Innenseite ineinander verschachtelt:ngIf Umfang definierenden Wert auf sich selbst
dirElement(scope A)
ngIfElement(scope B)
isolateDirectiveElement(scope C)
Scope Eine Variable test
hat. Scope C bindet bidirektional über ein Attribut, aber irgendwann funktioniert diese Bindung nicht mehr - wenn der Scope-A-Wert aktualisiert wird, selbst innerhalb eines $ apply-Blocks oder mit $ apply manuell aufgerufen, wird Scope Cs Wert nicht aktualisiert. Bei der Inspektion der 3 Zielfernrohre habe ich festgestellt, dass in einem Bereich B auch test
definiert ist. Da, glaube ich, die folgenden Punkte zutrifft:
Mit jedem Zyklus $ anwenden, um die Zwei-Wege-Bindung Versuche, den Stammwert von Schreiben sie direkt auf den übergeordneten Bereich unter
test
zu aktualisieren.Mit jedem $ Apply-Zyklus versucht die bidirektionale Bindung, das untergeordnete Element zu aktualisieren, indem es
test
aus dem übergeordneten Bereich gelesen wird. Dies kann immer nur den Wert lesen, den es gerade gesetzt hat, und da nichts anderes diesen Wert auf Bereich B setzt, bleibt Bereich C mit dem aktuellen Wert fürtest
hängen.
Wesentlichen aus dem gleichen Grund müssen Sie ein .
in ngModel zu diesem Szenario ist die Anwendung. Das scheint glaubwürdig genug zu sein (ich würde immer noch argumentieren, dass das Verhalten von (1) unnötig gefährlich ist), aber irgendwie hat diese Situation nie Fehler für mich verursacht (wo ein intermediärer Bereich existiert zwischen einem isolieren Bereich und dem Bereich, von dem er Werte zieht) und ich bin ziemlich sicher, dass ich Bereiche auf die gleiche Weise zuvor ohne Fehler kombiniert habe. Eine milde Eindeutigkeit dieser Situation ist, dass Bereich A auch ein isolierter Bereich ist, aber vorausgesetzt, dass alles ein untergeordneter Geltungsbereich davon/Teil seiner Vorlage ist, der nicht wichtig sein sollte.
Bin ich richtig, dass der beste Weg, um dies zu beheben ist test
zu test.value
(und definieren Test als {}
in Rahmen A der Steuerung) zu ändern?