2016-11-11 10 views
0

角度アプリでバックエンドにデータを検索するためにng-keyupを使用します。しかし、問題は、それは私のサーバーに毎回要求を送ることです。ユーザーが入力を一時停止/停止した後、バックエンドに投稿要求を送信するにはどうすればよいですか?それとも、ng-keyupを使うのは間違っていますか?あなたは以下のように$timeoutng-changeを使用することができます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

私のアプリが1秒間待つだけで、まだそれはすべての文字をクエリします@ arunaの答えを教えてください。しかし、あなたのソリューションでは、1秒後にユーザーが入力を一時停止するだけで照会します。私のサーバーにたくさんのリクエストを保存します。ありがとう! – bobtta

0

:あなたは上記のごsearch方法でパラメータとして$httpを使用するので$http$timeoutは、コントローラに注入しなければなりません。

<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); 
}; 
関連する問題