当$scope.$watchCollection
用于更改对象中的属性时,它仅评估第一级属性。有没有办法强制角度来评估调用$scope.$watchCollection
时的第二级或更低级别?
答案 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