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

有没有办法做到这一点?

4

2 回答 2

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
    }
  }
});
于 2015-07-07T18:10:50.907 回答
0

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

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

$watch有关使用对象相等性 的更多信息,请参阅以下链接。https://docs.angularjs.org/api/ng/type/ $rootScope.Scope#$watch

于 2015-07-07T18:16:57.717 回答