Vue之element-plus实现分页功能

一、展示效果

        第一页效果不需要进行计算,可以无限滑动

         

 第一页以后,最后一页之前

 

注意注意注意! 页数组件最后给个固定定位或绝对定位否则当表格变小时 该组件也会变化位置

<el-pagination/>组件z

 <el-pagination
      class="page"
      layout="prev, pager, next"
      small
      :total="changePage.total"
      @current-change="handelCurrentChange"
      v-model:current-page="changePage.currentPage"
    />

 声明变量:

        curretnPage:当前页

        total: 总页数 (这里我设置的每页显示9条数据,就用  总数据数+1/9 ,当然你想要每页显示10条或11条就改一下除数就可以)

 分页功能实现

//分页功能实习
const changePage = reactive({
  currentPage: 1,
  total: gdata.length + 1 / 9,
});



sdata为定义的tabel组件的数据
gdata为从后端接口返回的数据

//获取当前页数
const handelCurrentChange = (value) => {
  

//获取当前页码
  changePage.currentPage = value; 


//判断当前页是否为首页 页码从1开始,是则直接调用后端数据,否则要进行计算
  if (value > 1) {

    var i = (value - 1) * 10;  //计算当前页第一条数据的下标,

    var arry = [];  //建立一个临时数组

    //比如每页10条数据,第二页的第一条数据就是从 (2-1)*10 = 10 开始的 结束下标就是2*10=20 
    while (i < value * 10) {
     //解决最后一页出现null值
      if (gdata[i] != null) {
        arry.push(gdata[i]);
        i++;
        continue
      }
      break
    }
    sdata.value=arry

   } else {

    sdata.value = gdata;

  }
};

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以的,以下是一个使用 Vue3 和 Element Plus 实现表格分页的示例: ``` <template> <div class="table-container"> <el-table :data="tableData" :page-size="pageSize" :current-page="currentPage" @current-change="handleCurrentChange"> <el-table-column prop="id" label="ID"></el-table-column> <el-table-column prop="name" label="Name"></el-table-column> <el-table-column prop="address" label="Address"></el-table-column> </el-table> <el-pagination :page-size="pageSize" :total="total" :current-page.sync="currentPage"></el-pagination> </div> </template> <script> import { ref } from 'vue' import { getTableData } from '@/api/table' export default { setup() { const tableData = ref([]) const currentPage = ref(1) const pageSize = ref(10) const total = ref(0) const fetchData = async () => { const { data } = await getTableData(currentPage.value, pageSize.value) tableData.value = data.list total.value = data.total } const handleCurrentChange = (page) => { currentPage.value = page fetchData() } fetchData() return { tableData, currentPage, pageSize, total, handleCurrentChange } } } </script> <style scoped> .table-container { margin: 20px; } </style> ``` 这个示例使用了 `el-table` 和 `el-pagination` 组件来实现表格和分页功能。我们通过 `ref` 创建了响应式变量 `tableData`、`currentPage`、`pageSize` 和 `total`。在 `setup` 函数中,我们定义了一个 `fetchData` 函数来获取表格数据,然后在组件初始化时调用该函数。我们还定义了一个 `handleCurrentChange` 函数来处理分页组件的页码变化事件。在模板中,我们使用了这些变量和函数来渲染表格和分页组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值