2016-12-15 6 views
0

私はカウンタ値を増やすために工場サービスを呼び出しています。カウンタ値が5より大きい場合は、時計内で同じ工場サービスを再度呼び出しています。私は変更されたカウンタ値を見るために時計を使用しています。

私の質問は、カウンター5がサービスを呼び出すときですが、再び時計の内部で工場のサービスを呼び出すと、サービスを呼び出すのを止め、無限ループに入るはずです。工場サービスが呼び出されると、カウンタはまだ5より大きいので、

ウォッチの中でウォッチストップ値がチェックされていますか?あなたの状態$scope.counter > 5 // === false

あなたはそれ$scope.counter >= 5作ることができるか、私はへの新しい方法を提案しているので

Hereはhtmlコード

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

その作業上の罰金です。最初のカウンターは6です。時計は再びカウンターがトリガーされます6.値は同じですので時計が停止しました –

+0

OK私は自分の質問を編集しました。すぐに5を渡すよう促します。それは停止します。 –

+0

同じことを確認しています –

答えて

1

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); 
     } 
    }); 
} 

フィドル

JSコードです行うその

Check this link

+0

私は、条件が真のときにサービスが無限に呼び出されない理由を知り、なぜ$ scope.counterを見て停止しているのか驚いていますか?それは最大12回までしか見ることができません。再度私の質問を参照してください –

+0

を参照していない値によってカウンタ番号を渡すので、通常です –

+0

それはなぜ12回だけ呼び出すのですか?それを呼び出すべきではないか、無限に呼び出すべきです。更新されたfiddle nコードとコンソールを確認してください。 –

関連する問題