$apply()
Anrufe $digest()
Unter der Haube $ Digest ist die interne Schleife des Winkel zu überprüfen, ob jede binded Daten geändert hat. Meistens müssen Sie $ selbst nicht anrufen, da AngularJS sich darum kümmert. Die einzigen Fälle, die Sie $ apply aufrufen müssen, sind, wenn Sie eine externe Lib verwenden (zum Beispiel wenn Sie eine jquery lib in eine Direktive einfügen oder wenn Sie eine asynchrone Bibliothek wie facebook/twitter verwenden) und angular nicht wissen könnte über das DOM ändert sich. In diesen Fällen können Sie Ihren Code in $timeout
umhüllen. Es ist nur eine sichere Möglichkeit für eckig, $ apply anzurufen, wenn es bereit ist, anstatt den Fehler '$digest already in progress error'
zu riskieren, wenn Sie $ direkt anwenden.
$timeout (function() {
$scope.update = "something has changed";
});
Auf diese Weise ist die native Winkel Art und Weise, anstatt die Unterstrich-Bibliothek.
Für detaillierte Erklärungen können Sie überprüfen, this article (ein bisschen alt, aber die Grundprinzipien von eckigen bleiben gleich).
vielleicht um den Fehler "Digest bereits in Bearbeitung" zu vermeiden. Eine Variable kann geändert werden, während Angular die Daten "verdaut". Vielleicht kann diese Änderung nicht durch Winkel erkannt werden, so dass ein "$ apply" benötigt wird. Meine 2 Cent – AlainIb