Wenn AngularJs einen $ ONVAL auslöst, gibt es eine Möglichkeit, sofort zu sagen, welche Werte in diesem Bereich geändert haben?
-
28-10-2019 - |
Frage
Ich möchte Änderungen am Server automatisch synchronisieren. Derzeit erkenne ich Änderungen in a scope.$onEval
Handler von JSON, der den Anwendungszustand serialisiert und diesen mit einer zuvor serialisierten Kopie unter Verwendung von Diff-Match-Patch vergleicht.
Ich habe mich gefragt, ob AngularJS etwas eingebaut hat, um dies effizienter zu gestalten.
Lösung
Sie könnten mehrere verwenden $ watch'es statt einer einzigen $onEval
(Beachten Sie, dass $ watch eine Funktion als Argument anstelle eines String/Ausdrucks und in Version> = 0,10.0 mit den angesehenen Werten verglichen werden Angular.Object.equals). Abgesehen davon kenne ich keinen AngularJS -Mechanismus, der dafür nützlich wäre.
Andere Tipps
Ich arbeite an etwas Ähnlichem. Wie @psyho vorgeschlagen habe, dass ich es benutze $ watch die Änderungen fangen.
scope.$watch("dataObject",function (newValue, oldValue) {
//calculate changes
//send the changes to the server
});
Ich benutze dann die Logik von JQuery Diff Um zu berechnen, welche Änderungen vorgenommen wurden.