У меня есть вид на дерево. Пользователь может выбрать узел, а затем отредактировать конфигурацию этого узла. Я хотел бы узнать, изменилось ли это вообще от оригинала.AngularJS: Определить, изменилась модель
Все примеры, которые я видел в $watch
, происходят на уровне области видимости и не позволяют мне видеть, когда модель изменилась. Как я могу настроить часы (или нечто подобное), которые говорят мне, какой объект был изменен так, что я могу сделать что-то вроде
$scope.itemChanged = function(item) {
item.hasChanged = angular.equals(item, item.original);
}
Я пробовал глубокие примеры часы, как в this answer, но они говорят мне только, что вся дерево изменилось, а не какой узел. например
$scope.$watch('tree', function (oldValue, newValue, scope) {
console.log("changed", oldValue, newValue, scope);
}, true);
Вы считаете обязательным изменение на входах, которыми может манипулировать пользователь? – Sphaso
@Sphaso Это была моя первая мысль, но я также разрешаю пользователям добавлять узлы и перемещать узлы, которые будут происходить за пределами «формы», поэтому в идеале я бы хотел отслеживать все изменения. – Chris
Что бы вы хотели сделать, как только узел изменения \ добавляются и т. д.? – Sphaso