2016-12-15 27 views
0

我正在調用工廠服務來增加計數器值,並且當計數器值大於5時,我將再次調用手錶內的同一工廠服務。我正在使用手錶查看更改的計數器值。

我的問題是什麼時候計數器變得更大5它調用服務,但是當再次看到它調用工廠服務時,它停止調用服務,按照我應該進入無限循環嗎?因爲當工廠服務被稱爲計數器仍然大於5.

手錶在內部手錶被修改時是否停止檢查模態值?

Here是小提琴

JS代碼

var app = angular.module('myApp', []); 

app.factory('testFactory', function(){ 
    return { 
     incrementCount:function(a){ 
         a++; 
         console.log('called service'+a) 
         return a; 
     } 
    }    
}); 


function HelloCtrl($scope, testFactory) 
{ 
    $scope.counter = testFactory.incrementCount(5); 
    $scope.$watch('counter', function (newValue, oldValue) { 
     if($scope.counter > 5){ 
      $scope.counter = testFactory.incrementCount($scope.counter); 
     } 
    }); 
} 

HTML代碼

<div ng-controller="HelloCtrl"> 
    <p>{{counter}}</p> 
</div> 
+0

其工作正常。第一次計數器是6.然後手錶再次觸發計數器是6.價值是一樣的,所以手錶停止 –

+0

好我現在編輯我的問題,儘管直接傳遞5我正在傳遞$範圍,計數器內表,現在它是callinng確切12次然後停止。 –

+0

同樣的事情我正在檢查 –

回答

1

因爲你的病情$scope.counter > 5 // === false

你可以把它$scope.counter >= 5或建議的新途徑做即

Check this link

+0

我很驚訝地看到,爲什麼服務不是無限地調用條件爲真時,爲什麼手錶停止看$ scope.counter?它只能觀看12次。請再次看到我的問題請 –

+0

這是正常的,因爲你通過值不通過參考 –

+0

值計數器然後爲什麼它只是調用12次?要麼不應該打電話,要麼應該打電話給無限。檢查我更新的小提琴n代碼和控制檯。 –

相關問題