我有一个输入框,数据附加到数组。
<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
有没有办法实现这个目标?
答案 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#$表