$ watch和object数组

时间:2016-01-18 16:39:50

标签: angularjs watch

我在网上看,但无法发现任何信息。有没有人知道是否有$ watch只返回其中一个属性发生变化的对象。

目前让它观察一个对象数组,以便在特定属性更改时,然后更新另一个数组的对象。现在我正在遍历$ watch传回的新旧数组,并检查发生了什么变化。看起来很浪费,而且我希望不是我喜欢的大量数据。

2 个答案:

答案 0 :(得分:1)

来自AngularJS docs

$watch(watchExpression, listener, [objectEquality]):

  • watchExpression - 在每个$摘要周期计算的表达式。返回值的更改会触发对侦听器的调用

  • listener - 只要watchExpression的值发生变化,就会调用回调函数; function(newVal, oldVal, scope); PARAMS:

    • newVal包含watchExpression的当前值
    • oldVal包含watchExpression的先前值
    • scope指的是当前范围
  • objectEquality - 使用angular.equals比较对象相等而不是比较参考相等

因此,您可以传递函数newValoldVal参数,并检查数组中的哪个对象被弹出/ pushe。

希望有所帮助

答案 1 :(得分:0)

尝试这个技巧。

$scope.$watch('myArray.length', function(){
  console.log("My array has changed",$scope.myArray);
});