2014-03-03 46 views
0

嘗試使用角度js實現搜索字段。Angular js停止使用ng-change的前一個http請求

每次輸入值改變時,它都會調用一個方法來獲取查詢結果。

然而,它非常緩慢,因爲對於每個字符,它都會調用該方法一次。我輸入搜索框,如下

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

但它似乎沒有工作。當我查看網絡時,第二個請求提交時,第一個請求不會被取消。

在此先感謝您的幫助。

回答

1

看看@Doug R這個令人敬畏的指令,它增加了ng-change的延遲。

這完全節省了我的一天,因爲我的辦公室裏有一些速度非常快的打字機。 這隻都會有一定量打字不活動後火(300 - 500毫秒與一個良好的開端值)

Delayed ng-change

另一種方法是用NG-模糊反應或強制用戶按RETURN更新列表。

+0

謝謝你會嘗試一下,看看它是否工作 – edelweiss