2017-06-19 5 views
0

Ich versuche den Angular1 $ Digest-Zyklus zu verstehen. Ich habe in mehreren Artikeln gelesen, dass der Digest-Zyklus bei jeder Änderung mehrfach aufgerufen wird.Angular JS Digest Cycle mehrfach aufgerufen

In this Artikel heißt es:

Also, wenn wir alle die $ Funktionen der Uhr in der $ Merkliste durchlaufen, sind wir mit dem $ verdauen Schleife getan? Nein, wir gehen noch einmal durch die Liste und stellen sicher, dass sich nichts geändert hat. Wir tun dies, weil eine Änderung an einem der Werte stattgefunden haben könnte, wenn ein anderes $ watch-Element es aktualisiert hat. Wir fahren durch diese Schleife fort, bis keine Änderungen in irgendeinem der Werte mehr vorhanden sind.

Also meine Frage ist - in welchem ​​Szenario könnte es eine Änderung an einem der Werte gewesen sein, wenn ein anderes $ watch Element es aktualisiert?

Antwort

2

Dies ist vielleicht nicht das perfekte Beispiel in realen Anwendungsfällen, aber solche Dinge könnten passieren.

$scope.$watch('Var_A', function(){ 
    // change Var_B 
}); 

$scope.$watch('Var_B', function(){ 
    // do something 
}); 

Var_A und Var_B werden in die $ watch list aufgenommen. Angenommen, es gibt eine Winkeländerung, die Var_A ändert, es löst den ersten $ Digest-Zyklus aus und Var_B ändert sich. Dem ersten $ Digest-Zyklus ist nicht bekannt, dass sich Var_B geändert hat. Es geht dann noch einmal durch die Liste und wird feststellen, dass sich Var_B ändert. Danach geht es erneut durch die Liste und stellt sicher, dass nichts in der $ watch-Liste geändert wird.

Verwandte Themen