目前我使用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数据,它运行良好.现在我的问题是我可以实现服务器端搜索以及分页,因为我不想一次加载完整的数据集吗?
一种方法:对于当前结果集搜索可以使用过滤器正常执行,如果没有找到结果则调用服务器请求另一条数据.这种做法好吗?
好吧,假设您的服务器上有一个 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)
| 归档时间: |
|
| 查看次数: |
3994 次 |
| 最近记录: |