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代码实例
Jun 15 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
May 27 Javascript
javascript使用location.search的示例
Nov 05 Javascript
一个不错的js html页面倒计时可精确到秒
Oct 22 Javascript
jQuery操作cookie
Aug 08 Javascript
Java  Spring 事务回滚详解
Oct 17 Javascript
vue实现导航栏效果(选中状态刷新不消失)
Dec 13 Javascript
javascript中undefined的本质解析
Jul 31 Javascript
微信小程序如何获取地址
Dec 24 Javascript
JS实现横向轮播图(中级版)
Jan 18 Javascript
Js数组扁平化实现方法代码总汇
Nov 11 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 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+mysql事务rollback&amp;commit示例
2010/02/08 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
PHP定时执行任务的3种方法详解
2015/12/21 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
改善你的jQuery的25个步骤 千倍级效率提升
2010/02/11 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
jQuery 鼠标经过(hover)事件的延时处理示例
2014/04/14 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
angularjs性能优化的方法
2018/09/05 Javascript
vue-router beforeEach跳转路由验证用户登录状态
2018/12/26 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
Python交换变量
2008/09/06 Python
python调用新浪微博API项目实践
2014/07/28 Python
Python实现截屏的函数
2015/07/25 Python
python psutil监控进程实例
2019/12/17 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
html5的localstorage详解
2017/05/09 HTML / CSS
澳大利亚首屈一指的在线购物目的地:Kogan.com
2017/02/02 全球购物
化学实验员岗位职责
2013/12/28 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
2015年学校总务工作总结
2015/07/20 职场文书
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技