2017-06-19 14 views
0

角度の試行として、いくつかのデータを含む簡単なダッシュボードを作成しました。 PHPを使用すると、私たちはいくつかの気象データ、Google News経由のニュース、キーワードに関する10のつぶやきを取得します。角度のカウントダウン、再起動

$間隔ではダッシュボードを10秒ごとにリフレッシュしますが、間隔がトリガーされると何度もカウントを開始するカウントダウンを10から0にします。

誰かがこれを達成するのを手助けできますか?サブミットボタンと$間隔をトリガーとして

現在のコード:$scope.countDownValue

$scope.formSubmit = function(){ 
    $scope.getResults(); 
    if($scope.interval){    
     intervalController(); 
    } 
} 

function intervalController(){ 
    $interval($scope.getResults, 10000); 
} 

$scope.getResults = function(){ 
    if($scope.city){ 
     $http({ 
      method: 'POST', 
      url: 'server.php', 
      data: {city : $scope.city} 
     }).then(function successCallback(response){ 
      console.log(response.data); 
       //some data processing here 
     }, function errorCallback(response){ 

     }) 
    } 
} 
+0

これまでに試したコードを投稿してください –

答えて

2
$scope.initialCountDownValue = 10; 
$scope.countDownValue = $scope.initialCountDownValue; 
var intervalCanceller = null; 

$scope.formSubmit = function(){ 
    $scope.getResults(); 
    if($scope.interval){    
     intervalController(); 
    } 
} 


function decrementCountdown() { 
    $scope.countDownValue -= 1; 
    if ($scope.countDownValue === 0) { 
    $scope.getResults(); 
    $scope.countDownValue = $scope.initialCountDownValue; 
    } 
} 

function intervalController(){ 
    intervalCanceller = $interval(decrementCountdown, 1000); 
} 

$scope.getResults = function(){ 
    if($scope.city){ 
     $http({ 
      method: 'POST', 
      url: 'server.php', 
      data: {city : $scope.city} 
     }).then(function successCallback(response){ 
      console.log(response.data); 
       //some data processing here 
     }, function errorCallback(response){ 

     }) 
    } 
} 

ユーザーに表示するために、あなたのカウントダウン値を持っています。

追加ポイント1つ。

スコープの破棄に$ intervalの登録を忘れることを忘れないでください。あるいは、あなたは何のためにも永遠に生きることはありません。 間隔を正しく破棄する方法は次のとおりです。

$scope.$on('$destroy', function() { 
    if (intervalCanceller) { 
    $interval.cancel(intervalCanceller); 
    } 
}); 
関連する問題