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动态加载二
Aug 22 Javascript
jquery获取复选框checkbox的值的简单实现方法
May 26 Javascript
javascript事件处理模型实例说明
May 31 Javascript
jQuery实现点击查看大图并以弹框的形式居中
Aug 08 Javascript
angular实现商品筛选功能
Feb 01 Javascript
判断颜色是否合法的正则表达式(详解)
May 03 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
为输入框加入数字js校验代码分享
Nov 02 Javascript
bootstrap中selectpicker下拉框使用方法实例
Mar 22 Javascript
vue.js中实现登录控制的方法示例
Apr 23 Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
Dec 20 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 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
destoon各类调用汇总
2014/06/20 PHP
浅谈json_encode用法
2015/03/05 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
JavaScript 滚轮事件使用说明
2010/03/07 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
Jquery弹出层插件ThickBox的使用方法
2014/12/09 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
2017/09/02 Javascript
详解vue-router传参的两种方式
2018/09/10 Javascript
微信小程序云开发实现云数据库读写权限
2019/05/17 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
简单介绍Python中的JSON模块
2015/04/08 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
简单了解python协程的相关知识
2019/08/31 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
深入CSS3 动画效果的总结详解
2013/05/09 HTML / CSS
华为c/c++笔试题
2016/01/25 面试题
参观监狱心得体会
2014/01/02 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
大学生职业生涯规划书汇总
2014/03/20 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
大一新生检讨书
2014/10/29 职场文书
大学生实习推荐信
2015/03/27 职场文书
python实现监听键盘
2021/04/26 Python
python 远程执行命令的详细代码
2022/02/15 Python