Когда AngularJS запускает $ eNeval, есть ли способ немедленно сказать, какие значения в этой области изменились?

StackOverflow https://stackoverflow.com/questions/7354870

  •  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 Рассчитать, какие изменения были внесены.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top