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 15 Javascript
IE浏览器PNG图片透明效果代码
Sep 02 Javascript
jQuery 数据缓存data(name, value)详解及实现
Jan 04 Javascript
JavaScript实现快速排序(自已编写)
Dec 19 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
Feb 07 Javascript
判断JS对象是否拥有某种属性的两种方式
Dec 02 Javascript
兼容主流浏览器的iframe自适应高度js脚本
Jan 10 Javascript
Bootstrap轮播图的使用和理解4
Dec 14 Javascript
javascript基本数据类型及类型检测常用方法小结
Dec 14 Javascript
Openlayers+EasyUI Tree动态实现图层控制
Sep 28 Javascript
小程序中手机号识别的示例
Dec 14 Javascript
Vue CLI中模式与环境变量的深入详解
May 30 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
php 变量定义方法
2009/06/14 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
JS自调用匿名函数具体实现
2014/02/11 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
layui实现动态和静态分页
2018/04/28 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
详解Python进程间通信之命名管道
2017/08/28 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
PyTorch 对应点相乘、矩阵相乘实例
2019/12/27 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
Expedia英国:全球最大的在线旅游公司
2017/09/07 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
金融专业毕业生自荐信
2014/06/26 职场文书
导游词之上饶龟峰
2019/10/25 职场文书