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 相关文章推荐
推荐dojo学习笔记
Mar 24 Javascript
基于jQuery的表格操作插件
Apr 22 Javascript
JS判定是否原生方法
Jul 22 Javascript
可以用鼠标拖动的DIV实现思路及代码
Oct 21 Javascript
JS倒计时代码汇总
Nov 25 Javascript
jQuery中html()方法用法实例
Dec 25 Javascript
基于jQuery的JavaScript模版引擎JsRender使用指南
Dec 29 Javascript
JavaScript电子时钟倒计时第二款
Jan 10 Javascript
Angular中响应式表单的三种更新值方法详析
Aug 22 Javascript
jquery之基本选择器practice(实例讲解)
Sep 30 jQuery
基于Vue el-autocomplete 实现类似百度搜索框功能
Oct 25 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
Nov 05 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/01/27 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
基于jQuery的表格操作插件
2010/04/22 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
2014/01/15 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
angular多语言配置详解
2019/05/16 Javascript
js利用递归与promise 按顺序请求数据的方法
2019/08/30 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中有趣在__call__函数
2015/06/21 Python
django实现前后台交互实例
2017/08/07 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
python nohup 实现远程运行不宕机操作
2020/04/16 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
网络工程专业自荐信范文
2014/03/16 职场文书
司法建议书范文
2014/05/13 职场文书
2014年“向国旗敬礼”网上签名寄语活动方案
2014/09/27 职场文书
中小学生学籍证明
2014/10/25 职场文书
军训决心书范文
2015/09/22 职场文书