gpt4 book ai didi

javascript - $watchCollection() 嵌套数组

转载 作者:搜寻专家 更新时间:2023-11-01 05:05:00 25 4
gpt4 key购买 nike

我有一个嵌套数组:

$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'} 从一个数组移动到另一个数组时,没有任何反应)。如何在嵌套数组上放置 watch ?

最佳答案

使用深度观察$watch() 函数采用第三个可选参数来表示“对象相等性”。如果你为这个参数传入“true”,AngularJS 实际上会执行深度对象树比较。这意味着在每个 $digest 中,AngularJS 将检查新值和旧值是否具有相同的结构(不仅仅是相同的物理引用)。这使您可以监视更大的景观;然而,深度对象树比较的计算成本要高得多。

$scope.$watch('itinerary',function (newVal,oldVal) {
console.log(newVal)

},true);

关于javascript - $watchCollection() 嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25803170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com