我在网上看,但无法发现任何信息。有没有人知道是否有$ watch只返回其中一个属性发生变化的对象。
目前让它观察一个对象数组,以便在特定属性更改时,然后更新另一个数组的对象。现在我正在遍历$ watch传回的新旧数组,并检查发生了什么变化。看起来很浪费,而且我希望不是我喜欢的大量数据。
答案 0 :(得分:1)
来自AngularJS docs:
$watch(watchExpression, listener, [objectEquality]):
watchExpression
- 在每个$摘要周期计算的表达式。返回值的更改会触发对侦听器的调用
listener
- 只要watchExpression的值发生变化,就会调用回调函数; function(newVal, oldVal, scope)
; PARAMS:
newVal
包含watchExpression的当前值oldVal
包含watchExpression的先前值scope
指的是当前范围 objectEquality
- 使用angular.equals比较对象相等而不是比较参考相等
因此,您可以传递函数newVal
和oldVal
参数,并检查数组中的哪个对象被弹出/ pushe。
希望有所帮助
答案 1 :(得分:0)
尝试这个技巧。
$scope.$watch('myArray.length', function(){
console.log("My array has changed",$scope.myArray);
});