2016-03-29 17 views
0

Bu uygulamayı bir grup onay kutusuyla kullanıyorum. Bu kutuların kontrol edilmesi/kontrol edilmemesi, sunucuya bir $http.post() ürününü ateşleyecektir. Kullanıcı tıkladığında en kısa sürede 1 gönderi yapmasını istiyorum ancak $timeout telefonumu nasıl kuracağımı bilmiyorum. https://plnkr.co/edit/QJRc9uMxJA17eFszyexOKullanıcı Açma Sırasında Durdurulan Zamanlayıcı

Bunun şu anda yaptığı kullanıcının bir onay kutusu kontrol ettiğinde, tek bir alert 1 saniye sonra ateş olmasıdır:

Bir plunker burada kurdunuz. (Im $http.post() simüle etmek uyarısı kullanarak.

kullanıcı yeni onay kutusunu tıkladığında bunu $timeout sıfırlayabilirsiniz bir yolu var mı? Bu yüzden sürekli 5 onay kutularını üzerine tıklarsa o 1 uyarı yangın yerine edecek ?

cevap

1

$timeout() bir söz verir kontrol lodasd kullanıyorsanız ben. ne lüzum filtreleme işlevi olduğunu düşünüyorum (eğer üzerinde .then() çağırabilir, ama bu başka bir hikaye) Bekleyen bir zaman aşımı.Yani kodunuzu şu şekilde değiştirin:

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

Teşekkürler. Tam olarak aradığım şey. – Rhs

İlgili konular