Pagination+AngularJS实现前端的分页 Pagination+AngularJS实现前端的分页

Pagination是一个轻量级的jquery分页插件。只需几个简单的配置就可以生成分页控件。并且支持ajax获取数据,自定义请求参数,提供多种方法,事件和回调函数,功能全面的分页插件。

引入文件

本文介绍的是Pagination在AngularJS中的实现,所以需要引用AngularJS文件,以及Pagination的css和js文件。同时该分页插件还用到了jquery和bootstarp,所以也要依赖对这两个插件进行依赖,否则将无法显示样式。

    <!--jquery 和 bootstarp-->
    <script src="js/plugins/jquery/jquery.min.js"></script>
    <link rel="stylesheet" href="plugins/bootstrap/css/bootstrap.min.css">
    <script src="plugins/bootstrap/js/bootstrap.min.js"></script>
    <!--引入angularJS-->
    <script src="plugins/angularjs/angular.min.js"></script>
    <!--引入pagination-->
    <link href="plugins/angularjs/pagination.css">
    <script src="plugins/angularjs/pagination.js"></script>

创建模块和控制器

  • 由于此文使用的是AngularJS+Pagination实现的分页,所以需要先创建AngularJS的模块,和控制器。如果不明白什么是模块、控制器可以参见AngularJS入门。

在创建模块的时候需要引入分页插件功能。

//创建模块
		var app = angular.module("myApp", ['pagination']);

由于分页查询需要查询后台,所以创建控制器时需要注意引入$http域。

//创建控制器
        app.controller("myController", function ($scope, $http) {
        });

创建分页配置对象

  • 我们在实现分页的过程中要用到一些属性和方法所以,需要先在myController控制器中创建以一个分页配置对象,用于封装分页过程中用到的属性和方法。

  • 其中onChange方法暂时缺省,下一步创建分页查询方法时,再补充。

//创建分页配置对象
            $scope.paginationConf = {
                //当前页码
                currentPage : 1,
                //总页数
                totalItems : 10,
                //每页显示数量
                itemsPerPage : 10,
                //每页显示条目数
                perPageOptions : [5,10,20,50],
                //改变页码时执行方法
                onChange : function () {
                   
                }
            }

创建分页查询方法

  • 这一步的作用就是调用后台接口,查询出分页后的数据。直接在myController这个控制器中创建一个findPage(pageNo,pageSize)方法,其中要传入两个参数,pageNo,pageSize,这两个参数分别是需要查询的页码,每页数据的条目数。

  • 查询成功后会返回一个PageResult对象,这个对象中有两个属性,total和rows,分别存放了总条目数和当前页的数据,我们拿到这两个属性后赋值给相关成员变量即可。

//分页查询
            $scope.findPage = function (pageNo, pageSize) {
                //向后台查询数据
                $http.get("../brand/findPage?pageNo=" + pageNo + "&pageSize=" + pageSize).success(function (response) {
                    //讲查到的数据放入list
                    $scope.list = response.rows;
                    //获取最大数量
                    $scope.paginationConf.totalItems = response.total;
                })
            }

在页面中引入分页插件

  • 首先需要在body中引入ng-app和ng-controller。

  • 然后在页面中展示分页后的数据。

  • 对于页码工具栏。直接在需要显示分页工具栏(上一页

下一页、当前页码等。)的位置加入<tm-pagination conf="paginationConf"></tm-pagination>即可。

下面附上完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <!--jquery 和 bootstarp-->
    <script src="js/plugins/jquery/jquery.min.js"></script>
    <link rel="stylesheet" href="plugins/bootstrap/css/bootstrap.min.css">
    <script src="plugins/bootstrap/js/bootstrap.min.js"></script>
    <!--引入angularJS-->
    <script src="plugins/angularjs/angular.min.js"></script>
    <!--引入pagination-->
    <link href="plugins/angularjs/pagination.css">
    <script src="plugins/angularjs/pagination.js"></script>
    <script>
        //创建模块
        var app = angular.module("myApp", ['pagination']);
        //创建控制器
        app.controller("myController", function ($scope, $http) {

            //创建分页配置对象
            $scope.paginationConf = {
                //当前页码
                currentPage : 1,
                //总页数
                totalItems : 10,
                //每页显示数量
                itemsPerPage : 10,
                //每页显示条目数
                perPageOptions : [5,10,20,50],
                //改变页码时执行方法
                onChange : function () {
                    $scope.findPage($scope.paginationConf.currentPage,$scope.paginationConf.itemsPerPage);
                }
            }

            //分页查询
            $scope.findPage = function (pageNo, pageSize) {
                //向后台查询数据
                $http.get("../brand/findPage?pageNo=" + pageNo + "&pageSize=" + pageSize).success(function (response) {
                    //讲查到的数据放入list
                    $scope.list = response.rows;
                    //获取最大数量
                    $scope.paginationConf.totalItems = response.total;
                })
            }
        });
    </script>
</head>
<body ng-app="myApp" ng-controller="myController">
    <table>
        <tr>
            <td>编号</td>
            <td>品牌名称</td>
            <td>首字母</td>
        </tr>
        <tr ng-repeat="item in list">
            <td>{{item.id}}</td>
            <td>{{item.name}}</td>
            <td>{{item.firstChar}}</td>
        </tr>
    </table>
    <tm-pagination conf="paginationConf"></tm-pagination>
</body>
</html>

本文中用到的js文件和css文件已上传到百度网盘。链接 提取码:ei90