2016-08-31 28 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();