$ watchCollection выясняет, какая часть массива изменилась

0

У меня есть поле ввода с данными, прикрепленными к массиву.

<input ng-model="data.input1" value="" />

Я пытаюсь определить, когда данные в моем массиве изменились, поэтому я имею следующее:

$scope.$watchCollection('data', function(newCol, oldCol, scope) {
    console.log(newCol, oldCol, scope);
});

Тем не менее, я пытаюсь выяснить, какая часть моего массива изменилась, например, data.input1 в этом случае.

Если бы у меня был другой вход с ng-model="data.input2", я хотел бы знать, что input2 был фактически изменен, а не input1

Есть ли способ достичь этого?

Теги:
angularjs-watch

2 ответа

0

Вы можете использовать $watch и установить третий параметр как true. Третий параметр используется для разрешения равенства объектов.

$scope.$watch('data', function(newCol, oldCol) {. . . },true);

И обратитесь к приведенной ниже ссылке для получения дополнительной информации об использовании $watch с равенством объекта. https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope # $ watch

  • 0
    Я до сих пор не понимаю, как я могу понять, какая часть объекта была отредактирована
0

Там нет "из коробки", чтобы выяснить, какая часть массива изменилась. Вам нужно будет пропустить newCol и сравнить со значениями oldCol для каждого индекса:

$scope.$watchCollection('data', function(newCol, oldCol) {
  for (var i = 0; i < newCol.length; i++) {
    if (newCol[i] !== oldCol[i]) {
      // newCol[i] is your changed value
    }
  }
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню