2016-08-04 3 views
1

私は送信メソッドを持つフォームを持っています。フォームの中には、ブラーイベントハンドラを持つinputタグがあります。ユーザーは入力をテキスト入力して項目を検索し、ボタンをクリックしてフォームを送信します。以下にいくつかの擬似コードです:角度:httpコールが2回目のイベントで終了するまで待ちます

MethodToGetData 
{ 
call http to get data and setup model objects 
} 

Blur Event Handler 
{ 
    MethodToGetData 
} 

Submit Method 
{ 
MethodToGetData 

AddItem 
} 

私はに実行している問題があれば、テキストでのユーザーの種類であるとすぐに送信を実行するボタンをクリックすると、ぼかしイベントハンドラは、最初に実行し、HTTP呼び出しを行います。 submitメソッドはhttp呼び出しも行います。 httpコールを1回だけ実行できるようにしたい。

これを処理する方法についてのご意見はありますか?

ありがとうございました

+1

は、 'ng-modelOptions'の' debounce'プロパティを使用します。 – Claies

答えて

3

約束をしてください。あなたのコントローラに$ qを注入してください。

function controllerConstructor($q, someService) { 
    var vm = this; 
    var promise; 

    vm.blur = function() { 
    var deferred = $q.defer(); 
    promise = deferred.promise; 
    someService.httpMethod().then(function() { 
     deferred.resolve(dataToPass); 
    }); 
    }; 

    vm.submit = function() { 
    promise.then(
     function(dataThatWasPassed) { 
     // Wont run until http call is finished 
     } 
    ); 
    }; 
} 
関連する問題