Eine Sache, die AngularJS von anderen JavaScript-MVC-Frameworks unterscheidet, ist die Fähigkeit, gebundene Werte aus JavaScript mithilfe von Bindungen in HTML wiederzugeben. Angular tut dies "automatisch", wenn Sie der Variablen $ scope einen beliebigen Wert zuweisen.
Aber wie automatisch ist das? Manchmal nimmt Angular die Änderung nicht auf, daher muss ich $ scope. $ Apply () oder $ scope. $ Digest () aufrufen, um Angular zu informieren, dass die Änderung übernommen werden soll. Wenn ich eine dieser Methoden ausführe, wird manchmal ein Fehler ausgegeben und es wird angezeigt, dass bereits ein Digest ausgeführt wird.
Da die Bindungen (alles in {{}} geschweiften Klammern oder ng-Attributen) mit eval wiedergegeben werden, bedeutet dies, dass Angular das $ scope-Objekt ständig abfragt, um nach Änderungen zu suchen, und dann eine Auswertung durchführt, um diese Änderungen in das DOM / zu übertragen HTML? Oder hat AngularJS irgendwie herausgefunden, welche magischen Variablen verwendet werden, um Ereignisse auszulösen, die ausgelöst werden, wenn sich ein Variablenwert ändert oder zugewiesen wird? Ich habe noch nie davon gehört, dass es von allen Browsern vollständig unterstützt wird, daher bezweifle ich es.
Wie verfolgt AngularJS seine Bindungen und Bereichsvariablen?