选择错误:达到10 $ digest()次迭代

时间:2018-03-29 12:54:02

标签: angularjs selectize.js

我有一个选择下拉列表

<selectize config="mySelectizeConfig" options="getAvailableObjects(id)""></selectize>

当我返回数组时,在我的控制器上工作正常

$scope.getAvailableObjects=function(id) {
    return $scope.available_objects[id] 
}

但是当我试图过滤数组时

$scope.getAvailableObjects=function(id) {
   var result = [];
   result = $scope.available_objects[id].filter(function(object) {
     return object.is_active;
  });

   return result; 
}

给我一​​个'错误:达到10 $ digest()迭代' 我该如何排除故障?

当我尝试在视图上过滤数组时,我遇到了同样的错误。

options="available_objects[id] | filter: {'is_active':true}"

1 个答案:

答案 0 :(得分:0)

这是因为,Array.prototype.filter方法以及| filter : {'is_active':true}将始终返回 new 数组,因此 $ digest()迭代已达到,甚至虽然返回数组看起来相同。您可以通过缓存修复它们:

var cache = {};
$scope.getAvailableObjects = function(id) {
   return cache[id] = cache[id] || $scope.available_objects[id].filter(function(object) {
       return object.is_active;
   });
}

如果$scope.available_objects将被更改,您可以重置cache = {};