$ watchCollection()与嵌套数组

久比

我有形式的嵌套数组:

$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上?

Narek Mamikonyan

使用深度监视$ watch()函数接受“对象相等性”的第三个可选参数。如果您为此参数传递“ true”,则AngularJS实际上将执行深层对象树比较。这意味着在每个$ digest中,AngularJS将检查新值和旧值是否具有相同的结构(而不​​仅仅是相同的物理引用)。这使您可以监视更大的景观。但是,深层对象树比较在计算上要昂贵得多。

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

 },true);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章