2016-03-29 15 views
0

私は、このアプリケーションに一連のチェックボックスを付けました。これらのチェックボックスをオンまたはオフにすると、$http.post()がサーバーに送信されます。ユーザーがクリックを完了するとすぐに1ポストを発射したいが、私は$timeoutの設定方法がわからない。ユーザーがクリックを停止したときの角度タイマー

私はここで設定plunkerを持っている:https://plnkr.co/edit/QJRc9uMxJA17eFszyexO

これは、現在行うことは、ユーザーがチェックボックスをチェックしたときに、1つのアラートが1秒後に解雇されていることです。 (Imは$http.post()をシミュレートするために、アラートを使用して。

は、ユーザーが新しいチェックボックスをクリックしたとき、私はその $timeoutをリセットすることができます方法はありますか?だから私は連続5つのチェックボックスをクリックした場合、それは1回の警告を発動ではなくなります5?

答えて

1

$timeout()を使用している場合の約束(あなたがそれに.then()を呼び出すことができますが、それはまた別の話だ)を返します。また、キャンセルする$timeout.cancel(promise)があります保留中のタイムアウトです。コードを次のように変更してください:

app.controller('IndexController', function($scope, $timeout) { 

    var prevTimeout; 

    $scope.onClick = function() { 
    if(prevTimeout) { 
     $timeout.cancel(prevTimeout); 
    } 
    prevTimeout = $timeout(function() { 
     prevTimeout = null; 
     alert('some http post called.'); 
    }, 1000); 
    }; 

    $scope.model = new Array(5); 
}); 
+0

ありがとうございました。まさに私が探していたもの。 – Rhs

関連する問題