AngularJS $ beobachtet seltsames Verhalten während der Controller-Initialisierung

8

Ich habe ein Code-Snippet:

%Vor%

$watch wird zuerst ausgelöst. Und dieses Code-Snippet gibt Folgendes aus:

%Vor%

Ist es richtiges Verhalten? Natürlich könnte ich die Werte auf Gleichheit überprüfen, aber welche Gründe wie Verhalten?

P.S. Sie könnten dieses Beispiel online ausprobieren: Ссылка

    
ValeriiVasin 27.06.2013, 08:57
quelle

1 Antwort

8

Laut Dokumentation :

Der Listener wird nur aufgerufen, wenn der Wert aus dem aktuellen Wert stammt watchExpression und der vorherige Aufruf von watchExpression nicht gleich ( mit Ausnahme des anfänglichen Laufs , siehe unten).

Nachdem ein Beobachter mit dem Bereich registriert wurde, ist der Listener fn asynchron aufgerufen (via $evalAsync ) um den Watcher zu initialisieren. In seltenen Fällen ist dies unerwünscht, da der Listener aufgerufen wird, wenn sich das Ergebnis von watchExpression nicht geändert hat . Um dies zu erkennen Szenario innerhalb des Listeners fn , Sie können die newVal und vergleichen %Code%. Wenn diese beiden Werte identisch sind (===), dann war der Listener wegen Initialisierung aufgerufen.

    
ValeriiVasin 27.06.2013, 09:35
quelle

Tags und Links