如何在angularjs中等待响应

时间:2015-07-07 12:19:19

标签: angularjs http

我正在做的是将过滤器置于表(包含记录)。当我输入搜索框(使用http get方法)时,表格数据会根据搜索框进行更新。但是当我输入速度非常快时,我会在控制台500内部服务器错误中看到。

主要问题是在提交上一个响应之前我正在触发下一个请求。 结果没有问题。只需控制台显示每个http请求。如果在搜索框中快速输入,则会显示红色

它有什么解决方案?

1 个答案:

答案 0 :(得分:2)

你可以改变你的搜索输入:

var app = angular.module('app', []);

    app.controller('TableController', function($scope, $http, $timeout) {
        $http.get('yourTableData.json').then(function(result){
            $scope.rows = result.data;
        });

        $scope.filterText = '';

        var temp = '',
            filterTextTimeout;
        $scope.$watch('searchText', function (val) {
            if (filterTextTimeout){
               $timeout.cancel(filterTextTimeout);
            }    
            temp = val;
            filterTextTimeout = $timeout(function() {
                $scope.filterText = temp;
            $http.get($scope.filterText).then(function(result){ 
            $scope.rows = result;
            }
            }, 250);
        })
    });

    <input id="searchInput" type="search" placeholder="search field" ng-model="searchText" />
    <div class="record" ng-repeat="row in rows | filter:filterText">
        <span>{{row.content}}</span>
    </div>