AngularJS分页显示的简单案例

由于我下载的anjularJs是1.3的,所以有些代码会和1.5以及之后的有些不同.虽然代码可能不同,但是分页思想还是差不多的.

<body ng-app="myApp" ng-controller="myController">
        <table class="table table-bordered">
            <tr>
                <th>序号</th>
                <th>后宫牌号</th>
                <th>花名</th>
                <th>价格</th>
            </tr>
            <tr ng-repeat="person in people">
                <td>{{$index+1}}</td>
                <td>{{person.id}}</td>
                <td>{{person.name}}</td>
                <td>{{person.price}}</td>
            </tr>
        </table>
        <!--分页-->
        <div>
            <ul class="pagination pull-right">              
                <li>
                    <a href ng-click="prev()">上一页</a>
                </li>
                <li ng-repeat="page in pageList" ng-class="{active: isActivePage(page)}">
                    <a href ng-click="selectPage(page)">{{page}}</a>
                </li>
                <li>
                    <a href ng-click="next()">下一页</a>
                </li>
            </ul>           
        </div>
    </body>

JS部分

<script type="text/javascript">
        var myApp=angular.module("myApp",[]);
        myApp.controller('myController',["$scope", "$http",function($scope,$http){
    // 分页组件 必须变量
            $scope.currentPage = 1; // 当前页 (请求数据)
            $scope.pageSize = 4; // 每页记录数 (请求数据)
            $scope.totalCount = 0; // 总记录数 (响应数据)
            $scope.totalPages = 0; // 总页数 (根据 总记录数、每页记录数 计算 )

            //加载上一页
            $scope.prev = function() {
                    $scope.selectPage($scope.currentPage - 1);
                }
                //加载下一页
            $scope.next = function() {
                    $scope.selectPage($scope.currentPage + 1);
                }
                //加载指定页
            $scope.selectPage = function(page) {
                // page 超出范围
                if($scope.totalPages != 0 && (page < 1 || page > $scope.totalPages)) {
                    return;
                }
                //发送请求
                $http({
                    method: 'GET',
                    url: page + '.json',
                    params: {
                        page: page, // 页码
                        pageSize: $scope.pageSize // 每页记录数 
                    }
                }).success(function(data, status, headers, config) {
                    // 要在分页工具条显示所有页码 
                    $scope.pageList = new Array();
                    // 显示表格数据 
                    $scope.people = data.people;
                    //先根据总记录数去计算总页数
                    $scope.totalCount = data.totalCount; //总记录数
                    $scope.totalPages = Math.ceil($scope.totalCount / $scope.pageSize); //总页数
                    // 更新当前显示页码 
                    $scope.currentPage = page;
                    //显示分页工具条中间码
                    var begin; // 显示第一个页码
                    var end; // 显示最后一个页码 
                    // 如果每页显示10页,理论上 begin 是当前页 -5 
                    begin = $scope.currentPage - 5;
                    if(begin < 1) { //begin不能小于1
                        begin = 1;
                    }
                    // 显示10个页码,理论上end 是 begin + 9
                    end = begin + 9;
                    if(end > $scope.totalPages) {
                        //最后一页不能大于总页数
                        end = $scope.totalPages;
                    }
                    // 修正begin 的值, 理论上 begin 是 end - 9
                    begin = end - 9;
                    if(begin < 1) { //begin不能小于1
                        begin = 1;
                    }
                    // 将页码加入 PageList集合
                    for(var i = begin; i <= end; i++) {
                        $scope.pageList.push(i);
                    }
                }).error(function(data, status, headers, config) {
                    // 当响应以错误状态返回时调用
                    alert("出错,请联系管理员 ");
                });
            }
            //判断是否是当前页
            $scope.isActivePage = function(page) {
                return page === $scope.currentPage;
            }
            // 初始化,选中第一页
            $scope.selectPage(1);
        }])
    </script>

效果:
这里写图片描述
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/bushanyantanzhe/article/details/79204670
今日推荐