2016-11-11 38 views
0

我使用ng-keyup來搜索數據到我的後端。但問題是,它會每隔一段時間向我的服務器發送請求。如何在用戶暫停/停止輸入後向後端發送發佈請求?或者使用ng-keyup來做這件事是錯誤的?在ng-keyup(Angularjs)中暫停後發送數據

我的HTML

<input ng-keyup="search(data)" ng-model="data" type="text"/> 

控制器

$scope.search=function($scope, $http){ 
    ....http post codes here... 
} 
+0

http://stackoverflow.com/questions/22158063/angular-ngchange-variant-when-user-finishes-typing – imbond

+0

@bobtta根據您的要求,您可以限制。 1.如果您的搜索是基於用戶輸入的每個字符,則應該發生http呼叫2.否則,計算數據的長度並通過設置一些限制 –

回答

0

沒有爲ng-model用於此目的的debounce選項。

只需在您的輸入中添加ng-model-options="{ debounce: 1000 }"即可。

+0

這項工作來調用服務,這是我所期待的。因爲@aruna的答案它只是讓我的應用程序等待1秒,但它仍然會查詢每個字符。但隨着你的解決方案,只會在1秒後查詢用戶暫停輸入。它爲我的服務器節省了大量的請求。謝謝! – bobtta

0

您可以使用ng-change$timeout如下。

注意$http$timeout應該在你的控制,因爲你用$http作爲參數在search上述方法進行注射。

<input ng-change="search(data)" ng-model="data" type="text"/> 

JS

var handle; 
$scope.search = function(data){ 
    if(handle){ 
     $timeout.cancel(handle); 
     handle = null; 
    } 
    handle = $timeout(function(){ 
     // $http.post(..) 
    }, 1000); 
};