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

时间:2014-10-13 04:53:17

标签: javascript c# jquery asp.net-mvc angularjs

使用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);  
        })
    }

提前致谢。

1 个答案:

答案 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/

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

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

相关问题