解决 AngularJS 上的摘要溢出问题

Resolving digest overflow issue on AngularJS

本文关键字:溢出 出问题 AngularJS 解决      更新时间:2023-09-26

我正在尝试在我的视图中输出一个随机数,但不断收到以下消息:

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

这似乎是一个摘要流出问题,但我不确定如何解决它?这是我到目前为止的代码:

.HTML

<p>{{getRandomNumber(2, 12)}} providers nearby</p>

控制器.js

.controller('ServicesCtrl', function($scope, ServicesData, $stateParams) {  
  $scope.getRandomNumber = function(min, max){
    return Math.floor(Math.random() * (max - min) + min);
  }
});

括号{{ }}创建$watch。Angular 将$watch表达式并继续尝试(最多 10 次(,直到它获得稳定的值。由于您返回的是随机数,因此它永远不会稳定。

下面是一个解决方法。使用 ngInit 将随机结果分配给变量,并在表达式中使用该稳定值。

<p ng-init="foo=getRandomNumber()">{{foo}} providers nearby</p>

从"附近的提供程序"文本来看,我认为您遇到的问题不会是最终代码的问题,并且您不需要该解决方法(因为在$digest周期中,您不太可能拥有不同数量的提供程序(。