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 相关文章推荐
说说JSON和JSONP 也许你会豁然开朗
Sep 02 Javascript
jquery移除button的inline onclick事件(已测试及兼容浏览器)
Jan 25 Javascript
Javascript delete 引用类型对象
Nov 01 Javascript
JavaScript tab选项卡插件实例代码
Feb 23 Javascript
JS 实现banner图片轮播效果(鼠标事件)
Aug 04 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
Sep 21 Javascript
浅谈js的解析顺序 作用域 严格模式
Oct 23 Javascript
新手快速上手webpack4打包工具的使用详解
Jan 28 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
Feb 01 Javascript
layui使用label标签的方法
Sep 14 Javascript
原生js实现轮播图特效
May 04 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 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
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
使用PHP生成二维码的两种方法(带logo图像)
2014/03/14 PHP
Destoon实现多表查询示例
2014/08/21 PHP
PHP基于MySQL数据库实现对象持久层的方法
2015/06/17 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
2020/06/24 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
JavaScript之引用类型介绍
2012/08/10 Javascript
jquery showModelDialog的使用方法示例详解
2013/11/19 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
javascript实现C语言经典程序题
2015/11/29 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
深入理解Vuex 模块化(module)
2017/09/26 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
Python json模块使用实例
2015/04/11 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
pytorch SENet实现案例
2020/06/24 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
面向游戏玩家和书呆子的极客订阅盒:Loot Crate
2020/11/25 全球购物
物理研修随笔感言
2014/02/14 职场文书
德生2P3收音机开箱评测
2022/04/30 无线电