2016-12-15 2 views
0

ich eine Fabrik Service nenne Zählerwert zu erhöhen, und wenn der Zählerwert größer als 5 dann wieder ich rufe gleichen Fabrik Service innerhalb Uhr. Ich verwende Uhr, um den geänderten Zählerwert zu sehen.

Meine Frage ist, wenn der Zähler größer 5 wird es ruft Service, aber wenn wieder nach innen beobachten nennt es Fabrik-Service, es Dienst nicht mehr telefonieren, wie pro mir soll es in Endlosschleife rechts gehen? denn wenn Fabrik-Service wird der Zähler ist noch größer als 5

Ist Uhr stoppt Prüfwert modaler, wenn es geändert wird innerhalb Uhr genannt?

Here ist die Fiddle

JS Code

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-Code

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

es funktioniert nur gut. Der erste Zeitzähler ist 6. Dann wird die Uhr erneut ausgelöst. Der Zähler ist 6. Der Wert ist derselbe. Die Uhr wurde gestoppt. –

+0

OK Ich habe meine Frage jetzt bearbeitet, obwohl ich direkt 5 Scope übergeben habe, Counter in Watch, jetzt ist Callinn exakt 12 mal dann hört es auf. –

+0

gleiche Sache ist Überprüfung –

Antwort

1

Da Ihr Zustand $scope.counter > 5 // === false

Sie können es $scope.counter >= 5 machen oder ich schlage vor, einen neuen Weg zu machen das

Check this link

+0

Ich bin erstaunt, zu sehen, warum der Dienst unendlich nicht ruft, wenn die Bedingung wahr ist, warum Uhr $ scope.counter gestoppt wird beobachtet? und es schaut nur bis zu 12 mal. Sehen Sie meine Frage noch einmal bitte –

+0

das ist normal, weil Sie die Zählernummer nach Wert nicht durch Verweis übergeben –

+0

Dann warum ruft es nur 12 mal? Entweder sollte es nicht anrufen oder unendlich anrufen. Prüfe meinen aktualisierten Fiddle-N-Code und die Konsole. –