前端分页功能实现方法

一、前端实现思路

1.前端调用接口获取到全部数据,设定每页显示条目个数

2.通过全部数据及每页显示条目个数得到总页数

3.通过事件监听换页,并获得每页的条目

两种情况:

(1)全部数据只够展示一页

(2)除了第一页的其他页,数据通过算法截取

例如:第1页为前10个

第2页为11-20个

第3页为21-30个 以此类推

可以得到 11 = 2 * 10 - 9   -- 20 = 2 * 10

                21 = 3 * 10 - 9  -- 30 = 3 * 10

//总页数
const totalPage = Math.ceil(数据的长度 / 10)

//第一页
const pageOne = (arr)=>{
    const data = []
    for(let i = 0; i < 10 && i < arr.length; i++) {
        data.push(arr[i])
    }
    return data
}


//第n页 n > 1
const pageGreaterOne = (val,arr)=>{
    const data = []
    for(let i = val * 10 - 10; i < val * 10 && i < arr.length; i++) {
        data.push(arr[i])
    }
    return data
}

二、后端和前端配合实现思路

1.前端调用接口获取到全部数据的长度,设定每页显示条目个数

2.通过全部数据长度及每页显示条目个数得到总页数

3.通过事件监听换页,并获得每页的条目

两种情况:

(1)全部数据只够展示一页

(2)除了第一页的其他页

通过后端代码实现

// 获取对应身份个数 需要前端传递identity参数
exports.getAdminCount = (req, res) => {
    const sql = 'select * from users where identity = ?'
    db.query(sql,[req.body.identity], (err, results) => {
        if (err) return res.cc(err)
        res.send({
            length: results.length
        })
    })
}
// 监听换页返回数据  页码pager
//需要前端传递identity和当前的pager
exports.returnListData = (req,res)=>{
    const {identity,pager} = req.body
    const sql = `select * from users where identity = ? limit 1 offset ${pager}`
    db.query(sql,identity, (err, results) => {
        if (err) return res.cc(err)
        res.send(results)
    })
}

语法解释:

limit为截取多少数据   limit =1 的意思为当前pager只展示一条数据

offset为从何处截取

如果pager = 2 那么就是查找user表中的identity从第3行(数据表从0开始)开始截取1行(limit=1)

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue前端分页功能可以通过Element UI来实现。Element UI是一套基于Vue.js的桌面端组件库,提供了丰富的组件和工具,包括分页组件。 首先,在Vue项目中使用npm安装Element UI: npm install element-ui 然后,在项目的入口文件main.js中引入Element UI的样式和组件: import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) 现在,你可以在需要分页的组件中使用Element UI的分页组件了。以下是一个示例: <template> <div> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="sizes, prev, pager, next, jumper" :total="total"> </el-pagination> </div> </template> <script> export default { data() { return { currentPage: 1, // 当前页码 pageSize: 10, // 每页显示的条数 total: 100, // 总记录数 } }, methods: { handleSizeChange(val) { this.pageSize = val this.currentPage = 1 // 当改变每页显示的条数时,重置当前页码为1 // 并重新获取数据 this.getData() }, handleCurrentChange(val) { this.currentPage = val // 当改变当前页码时,重新获取数据 this.getData() }, getData() { // 根据当前页码和每页显示的条数,发送请求获取数据 }, }, } </script> 通过监听分页组件的size-change事件和current-change事件,我们可以获取到用户改变每页显示的条数和当前页码的操作。 当用户改变每页显示的条数时,我们可以将当前页码重置为1,并重新发送请求获取数据。 当用户改变当前页码时,我们重新发送请求获取数据。 在getData方法中,可以根据当前页码和每页显示的条数,发送请求获取相应的数据。最后,将获取到的数据渲染到页面中。 这样,通过使用Element UI的分页组件,我们就可以实现Vue前端的分页功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值