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



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

我想实现这样的功能,比如我们可以设置一个定时器任务,在每次按键后重置,延迟0.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);  
        })
    }

提前谢谢。

在发送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/

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

EDIT:修复了解决方案的错误描述

最新更新