【发布时间】:2016-01-19 01:07:31
【问题描述】:
我在网上查找,但无法找到任何内容。有谁知道是否有 $watch 只返回其属性之一发生变化的对象。
目前让它监视一个对象数组,以便当特定属性更改时它会更新另一个数组的对象。现在,我正在遍历 $watch 传回的新旧数组,并检查发生了什么变化。似乎很浪费,而且我不希望有大量数据。
【问题讨论】:
我在网上查找,但无法找到任何内容。有谁知道是否有 $watch 只返回其属性之一发生变化的对象。
目前让它监视一个对象数组,以便当特定属性更改时它会更新另一个数组的对象。现在,我正在遍历 $watch 传回的新旧数组,并检查发生了什么变化。似乎很浪费,而且我不希望有大量数据。
【问题讨论】:
来自 AngularJS docs:
$watch(watchExpression, listener, [objectEquality]):
watchExpression - 在每个 $digest 循环中计算的表达式。返回值的变化会触发对监听器的调用
listener - 当 watchExpression 的值改变时调用回调; function(newVal, oldVal, scope);参数:
newVal 包含 watchExpression 的当前值oldVal 包含 watchExpression 的前一个值scope 指的是当前作用域objectEquality - 使用 angular.equals 比较对象相等性,而不是比较引用相等性
所以你可以传入你的函数newVal 和oldVal 参数并检查数组中的哪个对象被弹出/推入。
希望有帮助
【讨论】:
试试这个技巧。
$scope.$watch('myArray.length', function(){
console.log("My array has changed",$scope.myArray);
});
【讨论】: