这几天有小伙伴讨论起了分页的相关问题,这里我也简单讲下前端如何简单便捷的利用Js(库)写出优雅,好用的分页工具。
分页是个很简单又超多接触的技术点,粗略来讲分如下两种:
真分页——每次根据页码、页大小获取数据并展示。
假分页——一次性获取所有数据,根据页码、页大小展示。
公认比较好的做法是真分页,这样可以避免很多问题(如内存占用过多)。
有一点需要注意,单纯的前端是无法独立完成数据分页的(废话),所以后端支持是必须的。
作为支持,webapi除了返回所请求的数据,还应返回数据总量以便计算页数:
如上图所示,我们可以看出数据总量27,分页大小10(这边只请求了10条数据)。
如果你拥有如上图的webapi的支持,就可以接着往下写了。
我使用对象字面量封装的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Load、createHtml和PagerTool是我自己封装的几个方法,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
PagerTool方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
调用方式会是这样的:
1 |
|
使用了如上代码,即可按照所返回的json数据的格式自动映射到容器内(按照传入的tagName生成dom):
切换后效果:
分页工具条,生成在页面是这样的:
1 |
<p class="page"><br data-filtered="filtered"> <a href="javaScript:void(0)" class="prePage">上一页</a><br data-filtered="filtered"> <a href="javaScript:void(0)" class="nowPage" style="background:#ACDDEA; color:#226F83; border:#93D3E4 1px solid;">1</a><br data-filtered="filtered"> <a href="javaScript:void(0)" class="nowPage">2</a><br data-filtered="filtered"> <a href="javaScript:void(0)" class="nowPage">3</a><br data-filtered="filtered"> <a href="javaScript:void(0)" class="nextPage">下一页</a><br data-filtered="filtered"></p> |