Javascript 如何在AngularJS中实现服务器端搜索框

Javascript 如何在AngularJS中实现服务器端搜索框,javascript,c#,jquery,asp.net-mvc,angularjs,Javascript,C#,Jquery,Asp.net Mvc,Angularjs,使用AngularJS在html输入框中实现自动完成功能的服务器端组件的快速有效方法是什么 我想实现一些功能,比如我们可以设置一个计时器任务,在每次按键后重置,延迟0.5秒。这样,如果用户快速键入多个字符,它不会在每个笔划中查询索引,只有在用户暂停一秒钟时才会查询索引 目前,我正在使用此代码- 在Html中- <input class="form-control" ng-model="Search" ng-change="SearchResults(Search)" type="text"

使用AngularJS在html输入框中实现自动完成功能的服务器端组件的快速有效方法是什么

我想实现一些功能,比如我们可以设置一个计时器任务,在每次按键后重置,延迟0.5秒。这样,如果用户快速键入多个字符,它不会在每个笔划中查询索引,只有在用户暂停一秒钟时才会查询索引

目前,我正在使用此代码-

在Html中-

<input class="form-control" ng-model="Search" ng-change="SearchResults(Search)" type="text" />

提前感谢。

在发送get请求之前,我会创建一个超时,每次您在输入框中键入时,该超时都会被清除。大概是这样的:

var promise;
$scope.SearchResults = function (SearchText) {
    if(promise) $timeout.cancel(promise);

    promise = $timeout(function(){
        // do service call
        alert(SearchText);           
    }, 500);
}
JSFiddle:

请注意,每次用户发送新请求时,都应该有一些逻辑来取消旧请求。否则,您需要对它们进行排队,并确定哪一个是最新的


编辑:修复了对解决方案的错误描述

但当我删除或快速按backspace键时,会立即显示完整列表(显示时间少于0.2秒),然后再次显示特定的文本结果。抱歉,我弄错了。。你的解决方案很有效…:)
var promise;
$scope.SearchResults = function (SearchText) {
    if(promise) $timeout.cancel(promise);

    promise = $timeout(function(){
        // do service call
        alert(SearchText);           
    }, 500);
}