我有一个包含十个对象的数组。它们中的每一个都包含六个属性并在视图中显示所有内容。用户可以通过在输入上键入新数据来更改属性。如何查看整个数组并确定哪个对象已更改的属性并且不重复我的代码10次以便分别观察每个对象?
答案 0 :(得分:5)
您可以使用 $watchCollection
$scope.$watchCollection('data', function (newVal, oldVal) { /*...*/ });
答案 1 :(得分:2)
通常,观察大型对象集合是一个坏主意,因为angularjs将对每个摘要循环执行相等性检查。如果你真的需要这样做,$scope.$watch
函数有第三个参数objectEquality
,你可以传递布尔函数,如果旧值等于新值,则返回true。您也可以将true
传递给第三个参数。
$scope.$watchCollection(obj, listener);
是另一种选择。