2015-11-15 111 views
0

我與角工作。

我有一個$超時功能的問題。 它發起NG-鼠標按下,所以如果我CLIC 2時,將其設爲2定時器。我想避免。如何刪除前一個定時器以僅保留最後一個定時器?下面的代碼:

 $scope.stopRefresh = function() { //ng-mousedown 
     $interval.cancel(autoRefresh); 
     restartRefresh = $timeout(function(){ 
     startRefresh(); 
    },30000); 
    }; 
+0

使用'取消()'設置超時 – charlietfl

+0

如果我把它設置之前,才取消定義 – Nitrof

+0

返回的代碼是不明確的。你爲什麼要做'$ interval.cancel(autoRefresh)'? –

回答

1

此代碼應工作:

$scope.stopRefresh = function() { //ng-mousedown 
    $interval.cancel(autoRefresh); //I am not clear with the purpose of this line. 

    if(restartRefresh){ 
     $timeout.cancel(restartRefresh); 
    } 
    restartRefresh = $timeout(function(){ 
     startRefresh(); 
    },30000); 
}; 
+0

也有同樣的問題。也許是更好的方法。我會盡力解釋我想要做什麼。我有一些輸入類型編號和文本輸入,每5秒在$ interval autoRefresh()上包含數據更新。但是當我嘗試在它上面陳述時,我沒有時間在下次刷新和更改丟失之前完成我的更改。所以我想在ng-mousedown上凍結30秒的時間間隔,如果我點擊OK,就重置它。 – Nitrof

+0

我認爲你應該爲此使用焦點偵聽器。當輸入獲得焦點時,您不想刷新。一旦用戶進行了更改並且焦點超出了輸入範圍,那麼您可以重新啓動計時器。與推遲刷新30秒相比,這是更好的。因爲,如果用戶在輸入字段中停留超過30秒並進行了一些更改,則它將再次丟失。現在,最好將這個邏輯包含在單獨的指令中,因爲它涉及處理焦點和聚焦。 –

+0

@ Ganesh庫馬爾。感謝那與ng-focus和ng-blur一起工作。 – Nitrof