$scope.$watchCollection用于更改对象中的属性时,它仅评估第一级属性。调用$scope.$watchCollection时,是否有一种方法可以迫使角度评估第二级或更低的水平?

最佳答案

您要查找的是$scope.$watch(watchExpression, listener, [objectEquality]);第三个参数“ objectEquality”为true


  
  在每次调用$digest()时都会调用watchExpression,并且应返回将被监视的值。 (由于$digest()在重新运行时
  检测到watchExpression可以每次执行多次的更改
  $digest(),并且应该是幂等的。)
  仅当当前watchExpression的值与上一次对watchExpression的调用的值不相等时,才调用侦听器
  (初次运行除外,请参见下文)。不平等是
  根据参考不等式确定,通过严格比较
  !== Javascript运算符,除非objectEquality == true(请参阅下一个
  点)
  当objectEquality == true时,根据watchExpression函数确定angular.equals的不等式。节省价值
  对于对象以供以后比较,使用angular.copy函数。
  因此,这意味着观看复杂物体会产生不利影响
  内存和性能的影响。值班听众可能会更改
  模型,可能会触发其他听众开火。这是通过实现
  重新运行观察程序,直到未检测到任何更改。重播
  迭代限制为10,以防止无限循环死锁。
  


https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch

09-29 20:17