在服务端实现 分页功能 的项目中,如何实现分页中的 上一页 和 下一页 的启用和禁用,在自己的实践中,经历痛苦的摸索.网上也没有找到有关的针对性文章, 经过反复琢磨, 最终成功达成效果; 分享给初学者和同道.也为自己做个记录.
应用场景: node项目,后端操作数据库,实现分页功能 (服务端分页控制),并设置分页中的 "上一页" 和 "下一页" 的启用和禁用功能
一. 后端处理数据库,查寻数据, 实现分页,(服务端分页控制)
二.后端传递数据,在前端通过模板 art-template 实现分页,
三.如何处理 分页中的 上一页 和 下一页的启用和禁用?
1, 当前页处于第1页时, 需要 上一页 的按键被禁用, 当处于 其它页时,恢复 上一页 的使用功能
2. 当前页处于 最后一个页码时, 下一页 的按键 应该被禁用, 当处于其它页时, 下一页 的功能恢复使用
四. 代码逻辑实现:
1. 后端处理
// 后端路由 Router.get("/poem", (req, res, next) => { // 定义当前页,这个当前页就是客户端点出时发送过来的页码数,把它变成number类型的十进抽数值 const page = Number.parseInt(req.query.page, 10); // 定义每页的显示数 const pageSize = 5; // 操作数据库集合中的数据 PoemsOne .find() .skip((page - 1) * pageSize) .limit(pageSize) .exec((err, poemsones) => { if (err) { return next(err); } PoemsOne.countDocuments((err, count) => { if (err) { return next(err); } const totalPages = []; const totalPage = Math.ceil(count / pageSize); for (let i = 0; i < totalPage; i++) { totalPages.push(i); } res.render("poem.html", { poemsones, totalPages, page, }); }); }); });2. 前端模板处理: (totalPages是后端传递过来的一个数值数组) bootstrap框架
<ul class="pagination"> <!-- 对上一页添加逻辑判断,当前页小于等于1 时, 对这个键设置禁用状态;--> {{if page<=1}} <li class="disabled"><a href="javascript:;">上一页</a></li> {{else}} <!-- 当处在其它页码时,恢复启用上一页的功能--> <li><a href="/poem?page={{page-1}}">上一页</a></li> {{/if}} <!-- 根据数据库的数据进行分页循环遍历 --> {{each totalPages}} 代码略... {{/each }} <--对下一页添加逻辑判断,当前页值 大于等于 现有的页数时, 下一页按键功能被禁用,> {{if page>=totalPages.length}} <li class="disabled"><a href="javascript:;">下一页</a></li> {{else}} <--当处在其它页码时,恢复启用下一页的功能> <li><a href="/poem?page={{page+1}}">下一页</a></li> {{/if}} </ul>通过以上,成功实现了简单的分页中 上一页 和 下一页 功能的启用和禁用.
技术简单, 大神和资深者可直接无视,如有错误,诚恳欢迎批评指正! 如对初学者稍有助益, 请点个好评
