使用AngularJS在html输入框中为自动完成功能实现服务器端组件的快速有效方法是什么?
我想实现一些功能,就像我们可以设置一个在每次击键后重置的计时器任务,延迟时间为.5秒。这样,如果用户快速键入多个字符,则每次笔划都不会查询索引,只有当用户暂停一秒时才会这样。
目前,我正在使用此代码 -
在Html中 -
<input class="form-control" ng-model="Search" ng-change="SearchResults(Search)" type="text" />
我的javascript代码是 -
$scope.SearchResults = function (SearchText) {
$scope.Request = new Request();
$scope.Request.Criteria = "[{Key:'SearchText', Value:'" + SearchText + "'}]";
projectRepository.get($scope.Request.get(), function (data) {
$scope.Projects = data.Data;
$scope.Request.set(data);
})
}
提前致谢。
答案 0 :(得分:2)
在发送get请求之前,我会创建一个超时,每次输入输入框时都会清除该超时。像这样:
var promise;
$scope.SearchResults = function (SearchText) {
if(promise) $timeout.cancel(promise);
promise = $timeout(function(){
// do service call
alert(SearchText);
}, 500);
}
JSFiddle:http://jsfiddle.net/o4ntvvdg/
请注意,每次用户发送新请求时都应该有一些取消旧请求的逻辑。否则你需要排队并找出哪一个是最新的。
编辑:修复了对解决方案的错误描述