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 相关文章推荐
通过Mootools 1.2来操纵HTML DOM元素
Sep 15 Javascript
JS实现仿百度文库评分功能
Jan 12 Javascript
JS拉起或下载app的实现代码
Feb 22 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
Mar 07 Javascript
JS简单获取日期相差天数的方法
Apr 24 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
Jun 01 Javascript
vue-router启用history模式下的开发及非根目录部署方法
Dec 23 Javascript
微信小程序和百度的语音识别接口详解
May 06 Javascript
JavaScript canvas绘制折线图
Feb 18 Javascript
jQuery实现异步上传一个或多个文件
Aug 17 jQuery
在vue中通过render函数给子组件设置ref操作
Nov 17 Vue.js
el-table-column 内容不自动换行的解决方法
Aug 14 Vue.js
浅谈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将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
如何实现浏览器上的右键菜单
2006/07/10 Javascript
jQuery学习2 选择器的使用说明
2010/02/07 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
Jquery注册事件实现方法
2015/05/18 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
JavaScript类的写法
2016/09/17 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
2017/11/22 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
浅谈Python的垃圾回收机制
2016/12/17 Python
Python扩展内置类型详解
2018/03/26 Python
python 字典中文key处理,读取,比较方法
2018/07/06 Python
python针对不定分隔符切割提取字符串的方法
2018/10/26 Python
PyQt5实现类似别踩白块游戏
2019/01/24 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
CSS3 RGBA色彩模式使用实例讲解
2016/04/26 HTML / CSS
房产销售经理职责
2013/12/20 职场文书
生产厂厂长岗位职责
2013/12/25 职场文书
高中自我评价范文
2014/01/27 职场文书
护理专科自荐书范文
2014/02/18 职场文书
离婚协议书范本2014
2014/10/27 职场文书
确保工程质量承诺书
2015/04/29 职场文书
2015年教研员工作总结
2015/05/26 职场文书
公司员工离职感言
2015/08/03 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
利用Python判断整数是否是回文数的3种方法总结
2021/07/07 Python