博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angularjs中的分页指令
阅读量:5128 次
发布时间:2019-06-13

本文共 4590 字,大约阅读时间需要 15 分钟。

自定义指令

import angular from 'angular';/** * @ngdoc module * @name components.page * @description 分页directive */export default angular.module('pageDirective', []).directive('ngPage', function () {    return {        restrict: 'E',        scope: {            totalCount: '=',            pageSize: '=',            param: '=',            pageItmes: '=',            currentPage: '=',            goPage: '&',            showMaxPage: '@',            GO: '@'        },        controller: controller,        template: templateFunction    }    function controller($scope, $element, $attrs) {        var size = 0;        $scope.$watch('pageSize', function (nvalue, ovalue) {            size = parseInt(nvalue);            if (typeof(ovalue) !== 'undefined') {                $scope.currentPage = parseInt(($scope.currentPage - 1) * Number(ovalue) / size) + 1;            }            $scope.totalPage = getTotalPages();        });        //计算总页数        var getTotalPages = function () {            return Math.ceil($scope.totalCount / size);        };        //监控总记录条数是否发生变化,如改变,需要重新计算页数        $scope.$watch('totalCount', function () {            $scope.totalPage = getTotalPages();            if ($scope.totalPage == undefined || isNaN($scope.totalPage)) {                $scope.totalPage = 1            }        });        //监控总页数,调整展示页码        $scope.$watch('totalPage', function () {            $scope.pages = getPages($scope.totalPage, $scope.currentPage);        });        //监控跳转的页数只能为数字        $scope.$watch('GO', function () {            var re = /[^\d]/g;            if ($scope.GO !== '' && !re.test($scope.GO) && $scope.GO > 0) {                $scope.pages = getPages($scope.totalPage, $scope.currentPage);            } else {                $scope.GO = '';            }        });        //监控当前页,然后调整展示页码        $scope.$watch('currentPage', function () {            // debugger;            $scope.pages = getPages($scope.totalPage, $scope.currentPage);        });        //跳转到某一页        $scope.setCurrentPage = function (pageno) {            if (pageno === '...' || pageno === 0 || pageno > $scope.totalPage || pageno === '') {                return;            }            $scope.currentPage = pageno;            $scope.param.page.currentPage = pageno;            $scope.goPage($scope.param);            $scope.GO = '';        };        //每页显示size改变        $scope.changeSize = function () {            $scope.param.page = {                currentPage: 1,                pageSize: $scope.pageSize            };            $scope.goPage($scope.param);        };        var getPages = function (totalPage, currentPage) {            var pages = [];            currentPage = parseInt(currentPage);            totalPage = parseInt(totalPage);            if (totalPage === 0) {                pages.push(1);            }            //总页数
<最大展示页数:展示全部 else if (totalpage <="totalPage;" { for (var i i++) pages.push(i); } 当前页靠近首页前4页,显示:首页前4页,..., 尾页后2页>
$attrs.showMaxPage && currentPage <= 4) { pages.push(1); pages.push(2); pages.push(3); pages.push(4); pages.push("..."); pages.push(totalPage - 1); pages.push(totalPage); } // 当前页靠近尾页后4页,显示 else if (totalPage > $attrs.showMaxPage && (totalPage - currentPage) < 4) { pages.push(1); pages.push(2); pages.push("..."); pages.push(totalPage - 3); pages.push(totalPage - 2); pages.push(totalPage - 1); pages.push(totalPage); } //当前页既不靠近首页前4页也不靠近尾页后4页, else { pages.push(1); pages.push(2); pages.push("..."); pages.push(currentPage - 1); pages.push(currentPage); pages.push(currentPage + 1); pages.push("..."); pages.push(totalPage); } return pages; }; } function templateFunction() { return '
' ; }}).name;

页面中调用

页面中获取数据的方法是queryList,go-page的时候把currentpage作为传递过去即可发送请求,取得想要的结果。

controller中需要传入初始化的数据

//初始化分页信息$scope.param = {   selectCount: [5, 10, 15],      page: {         currentPage: 1,          pageSize: 5      }};

 

转载于:https://www.cnblogs.com/iagw/p/6863752.html

你可能感兴趣的文章
拉格朗日乘子法 那些年学过的高数
查看>>
用户空间与内核空间,进程上下文与中断上下文[总结]
查看>>
JAVA开发环境搭建
查看>>
Visual Studio基于CMake配置opencv1.0.0、opencv2.2
查看>>
SDN第四次作业
查看>>
django迁移数据库错误
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
距离公式汇总以及Python实现
查看>>
Linux内核态、用户态简介与IntelCPU特权级别--Ring0-3
查看>>
第23月第24天 git命令 .git-credentials git rm --cached git stash clear
查看>>
java SE :标准输入/输出
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>