AngularJS 前台分页实现
程序员文章站
2022-03-16 16:56:52
...
这篇文章主要介绍了关于AngularJS 前台分页实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
分页思路
考评员查询,因为整体的数据量比较小,所以我们可以将分页放到前台进行处理。
其实分页的原理也很简单,我们根据分页选择的页码数和每页数据条数决定当前显示的是数组中的第多少项到多少项,然后再构造分页的参数传入已有的分页指令。
// 初始化分页参数 $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);
对数据进行分割,数据应该是从0
到size
,加上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>
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
以上就是AngularJS 前台分页实现的详细内容,更多请关注其它相关文章!
上一篇: SQL及servlet是什么?
下一篇: eclipse sdk是什么?
推荐阅读
-
Angularjs使用directive自定义指令实现attribute继承的方法详解
-
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
-
Python Django实现layui风格+django分页功能的例子
-
MVC5 + EF6 + Bootstrap3 (11) 实现排序、搜索、分页
-
Angularjs中$http以post请求通过消息体传递参数的实现方法
-
DataGridView实现简单分页功能
-
用*列表实现织梦首页分页效果
-
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
-
Java List分页功能实现代码实例
-
jsp+servlet+javabean实现数据分页方法完整实例