AngularJS 前台分页实现的示例代码


Posted in Javascript onJune 07, 2018

考评员查询,因为整体的数据量比较小,所以我们可以将分页放到前台进行处理。

其实分页的原理也很简单,我们根据分页选择的页码数和每页数据条数决定当前显示的是数组中的第多少项到多少项,然后再构造分页的参数传入已有的分页指令。

// 初始化分页参数
$scope.pageParams = {
  size: $stateParams.size,   // 每页数据条数
  page: $stateParams.page,   // 页码数
  last: undefined,       // 是否首页
  first: undefined,       // 是否尾页
  totalPages: undefined,    // 总页数
  totalElements: undefined,   // 总数据条数
  numberOfElements: undefined  // 当前页有几条数据
};

这是我们的分页指令要的数据,所以我们就是两个任务,第一,截取当前页应该显示的数据,第二生成参数传给分页指令。

这是最后实现的CommonService中的公共方法。

/**
 * 重新生成分页参数与分页数据
 * @param {每页数据条数}  size
 * @param {页码数}    page
 * @param {全部数据}   data
 * @param {Function}   callback
 * callback (pageParams, currentPageData)
 * pageParams: 分页的标准
 * currentPageData: 当前页的数据
 */
self.reloadPageParamsAndData = function(size, page, data, callback) {
  // 校验传入的参数
  if (typeof size === 'undefined') {
    throw '未接收到每页数据条数信息';
  }
  if (typeof page === 'undefined') {
    throw '未接收到分页信息';
  }
  if (typeof data === 'undefined') {
    throw '未接收到数据信息';
  }
  // 计算总页数和总数据条数
  var totalPages  = Math.ceil(data.length / size);
  var totalElements = data.length;
  // 计算当前页是否为首页 是否为尾页
  var first = page === 0 ? true : false;
  var last = page === totalPages - 1 ? true : false;
  // 根据分页参数计算当前页应该显示的数据 slice数组元素分割
  var currentPageData = data.slice(0 + page * size, size + page * size);
  // 获取当前页总共有多少条数据
  var numberOfElements = currentPageData.length;

  // 重新生成分页参数
  var pageParams = {
    size: size,             // 每页数据条数
    page: page,             // 页码数
    last: last,             // 是否首页
    first: first,            // 是否尾页
    totalPages: totalPages,       // 总页数
    totalElements: totalElements,    // 总数据条数
    numberOfElements: numberOfElements  // 当前页有几条数据
  };

  // 回调
  if (callback) {
    callback(pageParams, currentPageData);
  }
};

获取当前页数据

获取当前页的数据,我们需要知道每页数据条数,页码数即可对数据进行分割。

var currentPageData = data.slice(0 + page * size, size + page * size);

对数据进行分割,数据应该是从0size,加上page * size就是之前的页数中的数据量。

构建分页参数

// 计算总页数和总数据条数
var totalPages  = Math.ceil(data.length / size);
var totalElements = data.length;
// 计算当前页是否为首页 是否为尾页
var first = page === 0 ? true : false;
var last = page === totalPages - 1 ? true : false;
// 获取当前页总共有多少条数据
var numberOfElements = currentPageData.length;

数据总数除以每页数据条数向上取整得到总页数。

如果页数为0,则为首页;如果页数为总页数减1,则为尾页。

<yunzhi-page reload="reloadByPage" total-pages="pageParams.totalPages" total-elements="pageParams.totalElements" first="pageParams.first" last="pageParams.last" number="pageParams.page" size="pageParams.size" number-of-elements="pageParams.numberOfElements"></yunzhi-page>

AngularJS 前台分页实现的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery动态加载图片数据练习代码
Aug 04 Javascript
JS获取后台Cookies值的小例子
Mar 04 Javascript
js confirm()方法的使用方法实例
Jul 13 Javascript
asm.js使用示例代码
Nov 28 Javascript
js实现编辑div节点名称的方法
Dec 17 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
Sep 13 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
Feb 14 Javascript
JavaScript实现无穷滚动加载数据
May 06 Javascript
ES6模块化的import和export用法方法总结
Aug 08 Javascript
vue.js中实现登录控制的方法示例
Apr 23 Javascript
Node.js 使用AngularJS的方法示例
May 11 Javascript
浅谈PDF.js使用心得
Jun 07 #Javascript
vue better scroll 无法滚动的解决方法
Jun 07 #Javascript
vue translate peoject实现在线翻译功能【新手必看】
Jun 07 #Javascript
JavaScript 正则命名分组【推荐】
Jun 07 #Javascript
详解create-react-app 自定义 eslint 配置
Jun 07 #Javascript
vue.js实现标签页切换效果
Jun 07 #Javascript
js数组去重的N种方法(小结)
Jun 07 #Javascript
You might like
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
jQuery find和children方法使用
2011/01/31 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
javascript每日必学之继承
2016/02/23 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
BootStrap 实现各种样式的进度条效果
2016/12/07 Javascript
JavaScript常见的五种数组去重的方式
2016/12/15 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
nodejs mysql 实现分页的方法
2017/06/06 NodeJs
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
用webpack4开发小程序的实现方法
2019/06/04 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
python发腾讯微博代码分享
2014/01/10 Python
Linux下Python获取IP地址的代码
2014/11/30 Python
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
python中os模块详解
2016/10/14 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
python如何设置静态变量
2020/09/07 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
自荐信格式简述
2014/01/25 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
社会工作专业自荐信
2014/09/26 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
股权转让协议书
2014/12/07 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
导游词之南京夫子庙
2019/12/09 职场文书
详解JAVA的控制语句
2021/11/11 Java/Android
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL