如何实现angularJS分页

时间:2015-12-04 20:17:01

标签: javascript jquery angularjs pagination angularjs-ng-repeat

我正面临着分页的问题。我已经尝试了几个答案,包括自定义过滤器和每次不显示数据。我知道数据已被提取并且存在于DOM中,但我似乎无法弄清楚为什么它不显示数据。

分页控制:

// pagination controls
    $scope.currentPage = 1;
    $scope.totalItems = $scope.searchDataValues.length;
    $scope.entryLimit = 8; // items per page
    $scope.noOfPages = Math.ceil($scope.totalItems / $scope.entryLimit);
    $scope.pageChanged    = pageChanged;
    $scope.paginatedList = $scope.searchDataValues.slice(0, $scope.entryLimit);

    function pageChanged(){

        var begin = (($scope.currentPage - 1) * $scope.entryLimit),
            end   = begin + $scope.entryLimit;

        $scope.paginatedList = $scope.searchDataValues.slice(begin, end);

    }

HTML侧码:

<pagination
           ng-change="pageChanged()"
           total-items="totalItems"
           items-per-page="entryLimit"
           ng-model="currentPage"
           max-size="noOfPages"
           class="pagination-sm"
           boundary-links="true">
</pagination>

Ng-repeat过滤器:

<tr ng-repeat="data in searchDataValues | orderBy:sortKey:reverse | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit ">

从过滤器开始:

app.filter('startFrom', function () {
return function (input, start) {
    if (input === undefined || input === null || input.length === 0) return [];
    start = +start; //parse to int
    console.log(input.slice(start))
    return input.slice(start);
}
});

3 个答案:

答案 0 :(得分:0)

您可以使用ui bootstrap分页指令。 我使用的是旧版本,因此语法可能略有不同。 这是example

答案 1 :(得分:0)

只是猜测:你的pageChanged函数改变了$ scope.paginatedList,但你的ng-repeat绑定到searchDataValues而不是paginatedList。

这可能是您遇到麻烦的根源,但这只是猜测,因为您没有提供所有代码。

答案 2 :(得分:0)

对于任何来这里阅读帖子的人。

我最终使用了此处的代码:http://embed.plnkr.co/eheFSh/

我确实有效,但它破坏了我的排序功能。我会尽力让他们两个一起工作。