Когда AngularJS запускает $ eNeval, есть ли способ немедленно сказать, какие значения в этой области изменились?
-
28-10-2019 - |
Вопрос
Я хочу автоматически синхронизировать изменения на сервере. В настоящее время я обнаруживаю изменения в scope.$onEval
Обработчик от JSON сериализует состояние приложения и сравнивая его с ранее сериализованной копией, используя Diff-Match-Patch.
Мне было интересно, есть ли у Angularjs что -нибудь встроенное, чтобы сделать это более эффективным.
Решение
Вы можете использовать несколько $ watches вместо одного $onEval
(Обратите внимание, что $ watch может воспринимать функцию в качестве аргумента вместо строки/выражения, а в версии> = 0.10.0 наблюдаемые значения сравниваются с использованием Angular.Object.Equals) Кроме этого, я не знаю никакого механизма AngularJS, который был бы полезен для этого.
Другие советы
Я работаю над чем -то подобным. Как @psyho предложил я использовать $ watch Чтобы поймать изменения.
scope.$watch("dataObject",function (newValue, oldValue) {
//calculate changes
//send the changes to the server
});
Затем я использую логику из jquery diff Рассчитать, какие изменения были внесены.