2016-08-31 41 views
0

我需要通過Web服務爲我在文本框中輸入的搜索參數提取數據。目前它正在debounceng-model-options中正常工作,並在指定時間後觸發請求。用debounce刪除ng請求中的舊請求

我找不到那個角度取消了先前不完整的請求,一旦新的被激發。

如果不是,我應該如何處理,因爲每次按鍵都會在指定的時間段後觸發請求。

的HTML是

<input type="text" class="form-control" name="inpTeachers" ng-model="inpTeachers" id="inpTeachers" autocomplete="off" required ng-change="GetTeachers(frmAddSubjectMain)" ng-model-options="{ updateOn: 'default blur', debounce: {'default': 500, 'blur': 0} }" placeholder="Ex. Nancy Chang" /> 

而且方法GetTeachers只是一個簡單的方法,一個http請求後改變了一些範圍的變量。

我應該取消舊的http請求,如果另一個ng-change被激發。

+0

像往常一樣發佈代碼將有所幫助。但是由於我懷疑角度是發送任何請求,我不明白它是如何取消它。發佈代碼。你也可以......測試它。 –

+0

我沒有發佈任何代碼,因爲現有的代碼適合我。我現在要做 – Saksham

+0

@JBNizet現在你可能會得到一些提示 – Saksham

回答

0

如果你可能要關閉解僱請求,您可以使用http's config objecttimeout財產,給它一個number(毫秒)或Promise

function GetTeachers(frmAddSubjectMain){ 
    var canceler = $q.defer(); 
    yourService.retrieveTeachers(canceler).then(function() { 
     /* here is your result */ 
    }); 
} 

而在你的服務,你可能需要類似:

$http.get('/teachers', {timeout: canceler.promise}); 

每當你想取消正在進行的請求(如果還沒有完成它尚未),只要致電:

canceler.resolve();