我刚开始使用angularJS。我尝试使用ng-repeat和分页来实现项目列表。除非我过滤结果,否则一切正常。问题是,当页面中有更多结果时,我不知道总共有多少项目,所以我无法重新生成分页数据。
要获得筛选列表计数,请使用以下命令:
$scope.filterApplied = function (filteredList, query) {
$scope.filteredItems = $filter('filter')(filteredList, query);
if ($scope.filteredItems != null) {
$scope.totalItems = filteredList.length;
}
};
但是如果我将每页的最大项目设置为5,那么有10个结果$scope.totalItems
等于5。
我需要在应用filter:query
后limitTo:(itemsPerPage*currentPage)
和$index >= (currentPage -1)*5
之前以某种方式获取项目数。
我如何实现这一目标?
我的ng-repeat部分看起来像这样:
<tr ng-repeat="person in peopleList | filter:query | orderBy:orderByField:reverseSort | limitTo:(itemsPerPage*currentPage)" ng-if="lastResult($index)">
答案 0 :(得分:2)
您可以在控制器中为limitTo创建变量,并且只有在获得过滤列表的长度后才能设置它:
HTML
<tr ng-repeat="person in peopleList | filter:query | orderBy:orderByField:reverseSort | limitTo:limit" ng-if="lastResult($index)">
控制器
$scope.limit = ($scope.itemsPerPage*$scope.currentPage);
$scope.filterApplied = function (filteredList, query) {
$scope.filteredItems = $filter('filter')(filteredList, query);
if ($scope.filteredItems != null) {
$scope.limit=0;
$scope.totalItems = filteredList.length;
$scope.limit = ($scope.itemsPerPage*$scope.currentPage);
}
};