2016-02-04 68 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週期中的不同數量的提供者)。