AngularJS select ng-options 无限摘要错误

AngularJS select ng-options infinite digest error

我有一个 select 标签,在 ng-options 中有一个函数调用:

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

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

angular.js:14525 Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

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

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

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

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

解决方案是return如果元素没有改变,同一个数组对象。

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

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

有关详细信息,请参阅