$ watchCollection找出数组的哪个部分发生了变化

时间:2015-07-07 16:02:33

标签: javascript angularjs angularjs-watch

我有一个输入框,数据附加到数组。

<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

有没有办法实现这个目标?

2 个答案:

答案 0 :(得分:0)

没有&#34;开箱即用&#34;找出阵列的哪个部分发生变化的方法。您需要遍历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
    }
  }
});

答案 1 :(得分:0)

您可以使用$watch,并需要将第三个参数设置为true。第三个参数用于启用对象相等。

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

有关使用$watch与对象相等的更多信息,请参阅以下链接。  @Chris-Heald $ rootScope.Scope#$表