Lorsque AngularJS déclenche une onEval $, est-il possible de dire immédiatement quelles sont les valeurs dans ce cadre ont changé?
-
28-10-2019 - |
Question
Je veux des changements de synchronisation automatiquement au serveur. Actuellement, je suis détecter des changements dans un scope.$onEval
gestionnaire par JSON sérialisation l'état d'application et en le comparant à une copie précédemment sérialisé, en utilisant diff-match patch.
Je me demandais si AngularJS a rien construit pour le rendre plus efficace.
La solution
Vous pouvez utiliser plusieurs montre $ 'es au lieu de une seule $onEval
(notez que $ montre peut prendre une fonction comme argument au lieu d'une chaîne / expression, et dans la version> = 0.10.0 les valeurs sont comparées à l'aide regardé angular.Object.equals ). A part cela, je ne connais aucun mécanisme de AngularJS qui serait utile pour cela.
Autres conseils
Je travaille sur quelque chose de similaire. Comme suggéré @psyho J'utilise regarder sur $ pour attraper les changements .
scope.$watch("dataObject",function (newValue, oldValue) {
//calculate changes
//send the changes to the server
});
J'utilise alors la logique de jquery diff pour calculer les changements ont été apportées .