我有形式的嵌套数组:
$scope.itinerary =
[
[
{name:'x'},
{name:'y'},
{name:'z'}
],
[
{name:'a'},
{name:'b'},
{name:'c'}
]
]
我正在使用以下方法进行$ watchCollection:
$scope.$watchCollection(function () {
return $scope.itinerary;
},
function () {
console.log("Changed")
}
);
但是console.log()
仅当删除子数组之一或插入新数组时才执行。如果我将一个元素从一个数组移到另一个数组,则什么也不会发生。(例如,当我{name:'a'}
从一个数组移到另一个数组时,什么也没发生)。如何将手表放在嵌套的Array上?
使用深度监视$ watch()函数接受“对象相等性”的第三个可选参数。如果您为此参数传递“ true”,则AngularJS实际上将执行深层对象树比较。这意味着在每个$ digest中,AngularJS将检查新值和旧值是否具有相同的结构(而不仅仅是相同的物理引用)。这使您可以监视更大的景观。但是,深层对象树比较在计算上要昂贵得多。
$scope.$watch('itinerary',function (newVal,oldVal) {
console.log(newVal)
},true);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句