AngularJS错误:错误:infdig Infinite $ digest循环

时间:2015-03-10 16:21:22

标签: angularjs

尝试绑定具有重复项的数组。 首先使用以下内容删除副本。但我得到了这个

Error: error:infdig
Infinite $digest Loop

 return myArray.filter(function (elem, pos) {
                       return myArray.indexOf(elem) == pos;
                    });

如何删除重复项?

1 个答案:

答案 0 :(得分:1)

Array.prototype.filter每次都会返回一个新数组。如果你使用这个作为一些绑定的一部分,使用常规$ watch(进行身份检查的那些,而不是深度相等的那些),那么$ watch会在每个$ digest上产生一个“新值”,导致无限的消化循环。

相反,您应该只过滤一次,或者如果数据发生变化,请观察数据,并在过滤时应用过滤器。例如:

$scope.$watch('myData', function (value) {
    $scope.myFilteredData = myData.filter(...)
})
// bind to myFilteredData