2016-02-04 66 views
0

我试图输出在我看来,一个随机数,但不断收到以下消息:上AngularJS解决消化溢出问题

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

这似乎是一个消化流出的问题,但我不知道如何解决它?这是到目前为止我的代码:

HTML

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

controller.js

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

回答

3

大括号{{ }}创建一个$手表。 Angular will $观察表达式并继续尝试(最多达10次),直到获得稳定的值。既然你要返回一个随机数,它将永远不会稳定。

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

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

由“供应商附近的”文本来看,我认为你遇到不会与你的最终代码有问题的问题,你会不会需要一个解决方法(因为它是不太可能你将有$ digest周期中的不同数量的提供者)。