2017-02-10 8 views
0

ここにスクリプトがありますが、何が起きているのか全く分かりません。Javascript SetIntervalスクリプトを13回実行する毎に

var reloadTableInterval = setInterval(function(){ 
    console.log('ABC'); 
}, 120000); 

これを行うと、間隔が完了するたびに、コンソールに「ABC」が13回書き込まれていることがわかります。私は何か間違っているのかしら?

この機能は、AngularJS(1.3)コントローラの一部です。

app.directive('clientInfoModal', function() { 
    return { 
     restrict: 'E', 
     replace: true, 
     templateUrl: '/reservations/template/ClientInfoModal.html', 
     controller: 'unitCtrl' 
    }; 
}); 

そして、彼らは私のHTML文書の下部にロードされているが(それはです:

app.controller('unitCtrl', ['$scope', '$http', '$compile', function($scope, $http, $compile){ 
    //... 
}]); 

また、私は私のコントローラを使用する7ディレクティブを持って、彼らはすべてが、別の名前で、このように構築されています単一のページ小さなアプリケーション)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script> 
<script src="js/app.js"></script> 
<script src="js/controller/unitController.js"></script> 
<script src="js/directive/saleModal.js"></script> 
<script src="js/directive/reservationModal.js"></script> 
<script src="js/directive/clientInfoModal.js"></script> 
<script src="js/directive/unitsTable.js"></script> 
<script src="js/directive/waitingListModal.js"></script> 
<script src="js/directive/oneUnitWaitingListModal.js"></script> 
<script src="js/directive/newNoteModal.js"></script> 
+6

は思えます。より多くのコンテキストを参照することなく答えることはできません – baao

+0

このコントローラを使用するすべてのディレクティブは、HTMLドキュメントの下部にロードされ、コントローラの別のインスタンスをロードしますか? –

+0

好奇心を要して、データをポーリングしていますか? reloadTableIntervalは特有のように聞こえるので – Shilly

答えて

0

編集:OPの質問のコメントのスレッドに基づいて固定答え

app.service('intervalCheckService', ['$interval', function($interval) { 
    return { 
    intervalRun: false, 
    setInterval: function() { 
     if (!intervalRun) { 
     this.intervalRun = true; 
     var reloadTableInterval = $interval(function() { 
      console.log('ABC'); 
     }, 120000); 
     } 
    } 
    } 
}]); 

あなたのアプリにそのサービスを依存関係として含めます。それをコントローラに注入します。

app.controller('unitCtrl', ['$scope', '$http', '$compile', 'intervalCheckService', function($scope, $http, $compile, intervalCheckService) { 
    intervalCheckService.setInterval(); 
    //... 
}]); 

角度のドキュメントは、同様にあなたがより多くの例が必要な場合は、サービスの偉大な例があります:あなたは、あなたのコントローラーが13回をロードするようにSee Here

+2

'$ interval'は間隔が何度も開始されるのを防ぎません。 – JJJ

+0

@JJJそれは同じように振る舞う –

+0

彼の質問の下で彼のコメントで与えた新しい情報で動作するように私の答えを変更しました。こちらをご覧ください@YannChabot – matt

関連する問題