【问题标题】:Angular js stop previous http request with ng-changeAngular js 使用 ng-change 停止先前的 http 请求
【发布时间】:2014-03-03 08:22:25
【问题描述】:

尝试使用 Angular js 实现搜索字段。

每次输入值发生变化时,都会调用一个方法来获取查询结果。

但是它非常慢,因为对于每个字符,它都会调用一次该方法。我的输入搜索框如下

<input type="text" name="term" ng-model="term" ng-change="run_filter()"/>

我的功能

$scope.do_filter = function() {
    $scope.items = [];
    var canceler;
    term = $scope.term;
    if (canceler) canceler.resolve();
    canceler = $q.defer();
    $http({
        method: 'GET',
        url: '/search/do_search',
        params: {
            term: term
        },
        timeout: canceler.promise
    }).success(function(result) {
        if (result.items != null) {
            $scope.items = result.items;
            $scope.success = true;
        } else {
            $scope.success = false;
        }
        $scope.loading = false;
    });
}

但它似乎不起作用。我看网络的时候,提交第二个请求的时候,第一个请求没有被取消。

提前感谢您的帮助。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    看看@Doug R 的这个很棒的指令,它增加了 ng-change 的延迟。

    这完全节省了我的时间,因为我们办公室里有一些非常快速的打字机。 这只会在一定数量的打字不活动后触发(300 - 500ms 是一个很好的开始值)

    Delayed ng-change

    另一种方法是使用 ng-blur 做出反应或强制用户按 RETURN 来更新列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2015-12-31
      • 1970-01-01
      • 2020-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多