AngularJS选择ng-options无限摘要错误

时间:2019-04-10 15:14:23

标签: angularjs angularjs-infdig

我有一个带有ng-options函数调用的select标记:

<select ng-model='selectedList'
        ng-options='list.id as list.label
                    for list in listService.computeLists(resume)'
>

这将导致重复的无限摘要错误。

  

angular.js:14525错误:[$ rootScope:infdig]达到10个$ digest()迭代。流产!

有什么办法可以在ng-options中调用此函数而不会出现该错误?我尝试过记忆,但无法正常工作。

1 个答案:

答案 0 :(得分:0)

当应用程序的模型变得不稳定并且每个$digest周期触发状态更改和随后的$digest周期时,会发生此错误。 AngularJS可以检测到这种情况,并防止无限循环导致浏览器无响应。

一个常见的错误是绑定到一个函数,该函数每次调用都会生成一个新数组。例如:

<div ng-repeat="user in getUsers()">{{ user.name }}</div>
$scope.getUsers = function() {
  return [ { name: 'Hank' }, { name: 'Francisco' } ];
};

解决方案是,如果元素未更改,则返回相同的数组对象。

var users = [ { name: 'Hank' }, { name: 'Francisco' } ];

$scope.getUsers = function() {
  return users;
};

有关更多信息,请参见