1

我在 ng-options 中有一个带有函数调用的选择标签:

<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不出现该错误的情况下调用此函数?我试过记忆,但我无法让它工作。

4

1 回答 1

1

当应用程序的模型变得不稳定并且每个$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;
};

有关详细信息,请参阅

于 2019-04-10T18:13:09.437 回答