Angularjs 仅$scope.$watchCollection第一级属性

Angularjs $scope.$watchCollection first level properties only

本文关键字:一级 属性 scope watchCollection Angularjs      更新时间:2024-01-02

$scope.$watchCollection用于对象中属性的更改时,它仅评估第一级属性。有没有办法在调用$scope.$watchCollection时强制角度评估第二级或更低级?

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

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

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