Angularjs使用分页在大型数据集中搜索

ica*_*der 5 angularjs

目前我使用filter:query来搜索数据,就像这样

<input type="text" ng-model="query">
<tr ng-repeat="thought in thoughts | filter:query">
<td>thought.title</td>
</tr>
Run Code Online (Sandbox Code Playgroud)

如果我一次加载完整的json数据,它运行良好.现在我的问题是我可以实现服务器端搜索以及分页,因为我不想一次加载完整的数据集吗?

一种方法:对于当前结果集搜索可以使用过滤器正常执行,如果没有找到结果则调用服务器请求另一条数据.这种做法好吗?

Jul*_*lzt 3

好吧,假设您的服务器上有一个 API/CGI 来执行搜索并返回一个子集(例如通过使用 SQL limit start,number),实现这一点不会那么复杂。当您开始一个新查询时,您将设置thoughts为一个空数组,然后进行第一个 API 调用,例如返回 10 个结果。然后你可以有一个按钮或任何机制来进行下一个 API 调用,返回结果 11-20。在 $http 回调函数中,您只需将服务器返回的数据附加到数组中,以便在末尾添加新数据。所以想想这样的事情(这不是实际测试的代码,只是为了这个答案而写下来):

$scope.getdata = function() {
  $http.post('/api/whatever', 
  { query: $scope.query, startat: $scope.thoughts.length })
    .success(function(response,status,headers,config){
      $scope.thoughts.push.apply( $scope.thoughts, reponse.data );
    });

$scope.search = function() {
  $scope.thoughts = [];
  $scope.getdata();
}

Search for: <input ng:model="query">
<button ng:click="search()">Search</button>
<button ng:click="getdata()">Get more results</button>
Run Code Online (Sandbox Code Playgroud)