实现效果:

  

实现步骤:

1.分页页面:page.html,页面多余样式,需要自己去除。

  1. <div class="row" ng-show="conf.totalItems > 0">
  2. <div class="col-md-5 col-sm-12">
  3. <div class="dataTables_info" id="sample_1_info" role="status" aria-live="polite" ng-show="true">
  4. <!--Showing to of entries-->
  5. <!--total {{ conf.numberOfPages }} page,total {{ conf.totalItems }}-->
  6. the<input type="text" class="form-control input-xsmall input-inline" ng-model="jumpPageNum"
  7. ng-keyup="jumpToPage($event)"/>page,
  8. per page<select ng-model="conf.itemsPerPage" ng-options="option for option in conf.perPageOptions "
  9. ng-change="changeItemsPerPage()" class="form-control input-xsmall input-inline"></select>
  10. /total<strong>{{ conf.totalItems }}</strong>item
  11.  
  12. <!--A total of {{ conf.numberOfPages }} pages article {{ conf.totalItems }}-->
  13. </div>
  14. </div>
  15. <div class="col-md-7 col-sm-12">
  16. <div class="dataTables_paginate paging_bootstrap_full_number" id="sample_1_paginate">
  17. <ul class="pagination" style="visibility: visible;">
  18. <li ng-click="firstPage()" ng-class="{disabled:isFirst()}"><a href="javascript:" title="first"><i
  19. class="fa fa-angle-double-left"></i></a>
  20. </li>
  21. <li ng-click="prevPage()" ng-class="{disabled:isFirst()}"><a href="javascript:" title="prev"><i
  22. class="fa fa-angle-left"></i></a></li>
  23. <li ng-repeat="item in pageList track by $index" ng-click="changeCurrentPage(item)"
  24. ng-class="{active: item == conf.currentPage, separate: item == '...'}"><a href="javascript:">{{ item
  25. }}</a>
  26. </li>
  27. <li ng-click="nextPage()" ng-class="{disabled:isEnd()}"><a href="javascript:" title="next"><i
  28. class="fa fa-angle-right"></i></a></li>
  29. <li ng-click="lastPage()" ng-class="{disabled:isEnd()}"><a href="javascript:"
  30. title="{{ getText('last') }}"><i
  31. class="fa fa-angle-double-right"></i></a></li>
  32. </ul>
  33. </div>
  34. </div>
  35. </div>

2.分页控件:

  1. angular.module('bet.paging', [])
  2. .constant('pageSizeArray', [, , , , ])
  3. .constant('pagingConstant', {
  4. CURRENTPAGE: ,
  5. ITEMSPERPAGE:
  6. })
  7. .directive('paging', paging);
  8.  
  9. function paging(pageSizeArray) {
  10. return {
  11. restrice: 'EA',
  12. templateUrl: '/utils/page.html',
  13. replace: true,
  14. scope: {
  15. conf: '='
  16. },
  17. link: function (scope, element, attrs) {
  18. scope.changeCurrentPage = function (item) {
  19. if (item == '...') {
  20. return;
  21. } else {
  22. scope.conf.currentPage = item;
  23. }
  24. };
  25.  
  26. scope.conf.pagesLength = parseInt(scope.conf.pagesLength) ? parseInt(scope.conf.pagesLength) : ;
  27. if (scope.conf.pagesLength % === ) {
  28. scope.conf.pagesLength = scope.conf.pagesLength - ;
  29. }
  30.  
  31. // conf.erPageOptions
  32. if (!scope.conf.perPageOptions) {
  33. scope.conf.perPageOptions = pageSizeArray;
  34. }
  35.  
  36. // pageList
  37. function getPagination() {
  38. // conf.currentPage
  39. scope.conf.currentPage = parseInt(scope.conf.currentPage) ? parseInt(scope.conf.currentPage) : ;
  40. // conf.totalItems
  41. scope.conf.totalItems = parseInt(scope.conf.totalItems);
  42.  
  43. // conf.itemsPerPage (default:15)
  44. if (scope.conf.rememberPerPage) {
  45. if (!parseInt(localStorage[scope.conf.rememberPerPage])) {
  46. localStorage[scope.conf.rememberPerPage] = parseInt(scope.conf.itemsPerPage) ? parseInt(scope.conf.itemsPerPage) : ;
  47. }
  48.  
  49. scope.conf.itemsPerPage = parseInt(localStorage[scope.conf.rememberPerPage]);
  50.  
  51. } else {
  52. scope.conf.itemsPerPage = parseInt(scope.conf.itemsPerPage) ? parseInt(scope.conf.itemsPerPage) : ;
  53. }
  54.  
  55. // numberOfPages
  56. scope.conf.numberOfPages = Math.ceil(scope.conf.totalItems / scope.conf.itemsPerPage);
  57.  
  58. // judge currentPage > scope.numberOfPages
  59. if (scope.conf.currentPage < ) {
  60. scope.conf.currentPage = ;
  61. }
  62.  
  63. if (scope.conf.currentPage > scope.conf.numberOfPages) {
  64. scope.conf.currentPage = scope.conf.numberOfPages;
  65. }
  66.  
  67. // jumpPageNum
  68. scope.jumpPageNum = scope.conf.currentPage;
  69. var perPageOptionsLength = scope.conf.perPageOptions.length;
  70. // define state
  71. var perPageOptionsStatus;
  72. for (var i = ; i < perPageOptionsLength; i++) {
  73. if (scope.conf.perPageOptions[i] == scope.conf.itemsPerPage) {
  74. perPageOptionsStatus = true;
  75. }
  76. }
  77. if (!perPageOptionsStatus) {
  78. scope.conf.perPageOptions.push(scope.conf.itemsPerPage);
  79. }
  80. scope.conf.perPageOptions.sort(function (a, b) {
  81. return a - b
  82. });
  83.  
  84. scope.pageList = [];
  85. if (scope.conf.numberOfPages <= scope.conf.pagesLength) {
  86. for (i = ; i <= scope.conf.numberOfPages; i++) {
  87. scope.pageList.push(i);
  88. }
  89. } else {
  90. var offset = (scope.conf.pagesLength - ) / ;
  91. if (scope.conf.currentPage <= offset) {
  92. for (i = ; i <= offset + ; i++) {
  93. scope.pageList.push(i);
  94. }
  95. scope.pageList.push('...');
  96. scope.pageList.push(scope.conf.numberOfPages);
  97. } else if (scope.conf.currentPage > scope.conf.numberOfPages - offset) {
  98. scope.pageList.push();
  99. scope.pageList.push('...');
  100. for (i = offset + ; i >= ; i--) {
  101. scope.pageList.push(scope.conf.numberOfPages - i);
  102. }
  103. scope.pageList.push(scope.conf.numberOfPages);
  104. } else {
  105. scope.pageList.push();
  106. scope.pageList.push('...');
  107.  
  108. for (i = Math.ceil(offset / ); i >= ; i--) {
  109. scope.pageList.push(scope.conf.currentPage - i);
  110. }
  111. scope.pageList.push(scope.conf.currentPage);
  112. for (i = ; i <= offset / ; i++) {
  113. scope.pageList.push(scope.conf.currentPage + i);
  114. }
  115.  
  116. scope.pageList.push('...');
  117. scope.pageList.push(scope.conf.numberOfPages);
  118. }
  119. }
  120.  
  121. if (scope.conf.onChange) {
  122. scope.conf.onChange();
  123. }
  124. scope.$parent.conf = scope.conf;
  125. }
  126.  
  127. // firstPage
  128. scope.firstPage = function () {
  129. scope.conf.currentPage = ;
  130. };
  131.  
  132. // prevPage
  133. scope.prevPage = function () {
  134. if (scope.conf.currentPage > ) {
  135. scope.conf.currentPage -= ;
  136. }
  137. };
  138. // nextPage
  139. scope.nextPage = function () {
  140. if (scope.conf.currentPage < scope.conf.numberOfPages) {
  141. scope.conf.currentPage += ;
  142. }
  143. };
  144.  
  145. //lastPage
  146. scope.lastPage = function () {
  147. scope.conf.currentPage = scope.conf.numberOfPages;
  148. };
  149.  
  150. //is first page
  151. scope.isFirst = function () {
  152. if (scope.conf.currentPage > ) {
  153. return false;
  154. }
  155. return true;
  156. };
  157.  
  158. //is end page
  159. scope.isEnd = function () {
  160. if (scope.conf.currentPage < scope.conf.numberOfPages) {
  161. return false;
  162. }
  163. return true;
  164. };
  165.  
  166. // 跳转页
  167. scope.jumpToPage = function () {
  168. scope.jumpPageNum = scope.jumpPageNum.replace(/[^-]/g, '');
  169. if (scope.jumpPageNum !== '') {
  170. scope.conf.currentPage = scope.jumpPageNum;
  171. }
  172. };
  173.  
  174. scope.changeItemsPerPage = function () {
  175. if (scope.conf.rememberPerPage) {
  176. localStorage.removeItem(scope.conf.rememberPerPage);
  177. }
  178. };
  179.  
  180. scope.$watch(function () {
  181. var newValue = scope.conf.currentPage + ' ' + scope.conf.totalItems + ' ';
  182. if (scope.conf.rememberPerPage) {
  183. if (localStorage[scope.conf.rememberPerPage]) {
  184. newValue += localStorage[scope.conf.rememberPerPage];
  185. } else {
  186. newValue += scope.conf.itemsPerPage;
  187. }
  188. } else {
  189. newValue += scope.conf.itemsPerPage;
  190. }
  191. return newValue;
  192.  
  193. }, getPagination);
  194.  
  195. //scope.getText = function (key) {
  196. // return currentPage.text[key];
  197. //};
  198. }
  199. }
  200. };

3.页面调用:

  1. <paging conf="pagingConf"></paging>
  1. //声明user模块并引入bet.paging子模块
  2. angular.module('bet.user', ['bet.paging']);
  3.  
  4. angular
  5. .module('bet.user')
  6. .controller('userAppCtrl', userAppCtrl);
  7.  
  8. //依赖注入pagingConstant
  9. userAppCtrl.$inject = ['$scope', 'pagingConstant'];
  10.  
  11. function userAppCtrl($scope, pagingConstant) {
  12.   
  13. //paging config
  14. $scope.pagingConf = {
  15. currentPage: pagingConstant.CURRENTPAGE,
  16. itemsPerPage: pagingConstant.ITEMSPERPAGE,
  17. totalItems:   
  18. };
  19.  
  20. });

Angularjs 分页控件的更多相关文章

  1. 自定义angularjs分页控件

    继昨天写了knockoutjs+ jquery pagination+asp.net web Api 实现无刷新列表页 ,正好最近刚学习angularjs ,故琢磨着写一个angularjs版本的分页 ...

  2. 在DevExpress程序中使用Winform分页控件直接录入数据并保存

    一般情况下,我们都倾向于使用一个组织比较好的独立界面来录入或者展示相关的数据,这样处理比较规范,也方便显示比较复杂的数据.不过在一些情况下,我们也可能需要直接在GridView表格上直接录入或者修改数 ...

  3. asp.net webform 自定义分页控件

    做web开发一直用到分页控件,自己也动手实现了个,使用用户自定义控件. 翻页后数据加载使用委托,将具体实现放在在使用分页控件的页面进行注册. 有图有真相,给个直观的认识: 自定义分页控件前台代码: & ...

  4. asp.net分页控件

    一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Reg ...

  5. 仿淘宝分页按钮效果简单美观易使用的JS分页控件

    分页按钮思想:  1.少于9页,全部显示  2.大于9页,1.2页显示,中间页码当前页为中心,前后各留两个页码  附件中有完整例子的压缩包下载.已更新到最新版本  先看效果图:  01输入框焦点效果  ...

  6. winform快速开发平台 -> 基础组件之分页控件

    一个项目控件主要由及部分的常用组件,当然本次介绍的是通用分页控件. 处理思想:我们在处理分页过程中主要是针对数据库操作. 一般情况主要是传递一些开始位置,当前页数,和数据总页数以及相关关联的业务逻辑. ...

  7. 基于存储过程的MVC开源分页控件--LYB.NET.SPPager

    摘要 现在基于ASP.NET MVC的分页控件我想大家都不陌生了,百度一下一大箩筐.其中有不少精品,陕北吴旗娃杨涛大哥做的分页控件MVCPager(http://www.webdiyer.com/)算 ...

  8. AspNetPager分页控件配置

    AspNetPager是asp.net中常用的分页控件,下载AspNetPager.dll,添加引用,在工具栏就可以看到AspNetPager控件: 拖过来之后,设置如下属性: <webdiye ...

  9. 分页控件layui的使用

    $.getJSON( )的使用方法简介 $.getJSON( url [, data ] [, success(data, textStatus, jqXHR) ] ) url是必选参数,表示json ...

随机推荐

  1. [转][ASP.net]后台页面刷新

    三种后台刷新页面的方法: // 刷新方法一 Response.AddHeader("); // 刷新方法二 Response.Write("<script language= ...

  2. Maven 创建java Web项目,配置Spring,CXF

    1.搭建Maven环境 参考文章 Maven3路程(一)环境搭建 http://www.cnblogs.com/leiOOlei/p/3359561.html Maven3路程(二)Eclipse集成 ...

  3. JSP自定义业务标签

    自定义标签: package cn.hv.tag; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; ...

  4. CVE-2018-8420 漏洞复现

    影响的 Windows 版本: Microsoft Windows 10 Version 1607 for 32-bit SystemsMicrosoft Windows 10 Version 160 ...

  5. 深入浅出 Java Concurrency (5): 原子操作 part 4 CAS操作

    在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁(后面的章节还会谈到锁). 锁机制存在以下问题: (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度 ...

  6. C# 进程(应用程序)间通信

    SendMessage用法: 函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.该函数是应用程序和应用程序之间进行消息传递的主要手段之一. ...

  7. git备忘

    git checkout . 放弃本地修改

  8. ubuntu 安装google输入法

    第五步:通常情况下,IBus图标(一个小键盘)会出现在桌面右上角的任务栏中.有时候这个图标会自行消失,可使用以下命令,找回消失的IBus图标: ibus-daemon -drx   不建议用googl ...

  9. Apt-Cacher-ng 搭建缓存服务器

    docker pull minimum2scp/apt-cacher-ng docker run -d -p 3142:3142 --name=cache -e ACNG_BACKENDS_DEBIA ...

  10. Excel VBA入门(九)操作工作薄

    虽然我前面讲过,在VBA中操作工作薄并不是件明智的事,但有些时候,还是避免不了要这么做.绝大多数情况下,我们要做的是获取到某个工作薄对象,并以此来获得其中的工作表对象,然后再对工作表中的数据进行处理. ...