Angularjs $ scope。$ watchCollection仅限第一级属性

时间:2015-02-18 17:56:54

标签: javascript angularjs

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

1 个答案:

答案 0 :(得分:2)

您要找的是$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