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 相关文章推荐
Javascript操纵Cookie实现购物车程序
Feb 15 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
Jul 09 Javascript
动态的绑定事件addEventListener方法的使用
Jan 24 Javascript
jQuery制作简洁的多级联动Select下拉框
Dec 23 Javascript
jQuery实现带水平滑杆的焦点图动画插件
Mar 08 Javascript
搞定immutable.js详细说明
May 02 Javascript
详解vue组件化开发-vuex状态管理库
Apr 10 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
Aug 30 Javascript
react中实现搜索结果中关键词高亮显示
Jul 31 Javascript
vue不操作dom实现图片轮播的示例代码
Dec 18 Javascript
es6数组的flat(),flatMap()函数用法实例分析
Apr 18 Javascript
理解JavaScript中的Proxy 与 Reflection API
Sep 21 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
PHP程序开发范例学习之表单 获取文本框的值
2011/08/08 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
baidu博客的编辑友情链接的新的层窗口!经典~支持【FF】
2007/02/09 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
jquery实现鼠标点击后展开列表内容的导航栏效果
2015/09/14 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
Promise扫盲贴
2019/06/24 Javascript
一步一步实现Vue的响应式(对象观测)
2019/09/02 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
python三元运算符实现方法
2013/12/17 Python
python中的全局变量用法分析
2015/06/09 Python
Python中的日期时间处理详解
2016/11/17 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
Django之编辑时根据条件跳转回原页面的方法
2019/08/21 Python
python web框架中实现原生分页
2019/09/08 Python
Python实现串口通信(pyserial)过程解析
2019/09/25 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
工商管理专业应届生求职信
2013/11/04 职场文书
信息部岗位职责
2013/11/12 职场文书
技能竞赛活动方案
2014/02/21 职场文书
赡养老人协议书
2014/04/21 职场文书
毕业生找工作求职信
2014/08/05 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
2014司机年终工作总结
2014/12/05 职场文书
python神经网络Xception模型
2022/05/06 Python