Vue中ElementUI分页组件Pagination的使用

一、概要

ElementUI 提供了 el-pagination 组件,只要配置相应得参数和事件,即可实现分页。

分页

二、实现
1、基本用法
  <div class="pagination">
    <el-pagination
      background
      layout="total, sizes, prev, pager, next, jumper"
      :current-page="tablePage.pageNum"
      :page-size="tablePage.pageSize"
      :page-sizes="pageSizes"
      :total="tablePage.total"
      @size-change="handleSizeChange"
      @current-change="handlePageChange"
    />
  </div>
  data() {
    return {
      tablePage: {
        pageNum: 1, // 第几页
        pageSize: 10, // 每页多少条
        total: 0 // 总记录数
      },
      pageSizes: [10, 20, 30]
    }
  },
  methods: {
    handlePageChange(currentPage) {
      this.tablePage.pageNum = currentPage
      // 在此刷新数据
    },
    handleSizeChange(pageSize) {
      this.tablePage.pageSize = pageSize
      // 在此刷新数据
    }
  }
2、后端分页的实现

实现思路:向后台发送请求,传入pageNum、pageSize两参数,直接得到相应的分页数据。

    // 获取数据
    getData() {
      let param = {
        pageNum: this.tablePage.pageNum,
        pageSize: this.tablePage.pageSize
      }
      // 请求后台接口函数
      getDataApi(param, { loading: true }).then(res => {
        // 后台返回数据
        this.list = res.data.list
        this.tablePage.total = res.data.total
      })
    },
3、前端分页的实现

实现思路:向后台发送请求,获取全部数据,前端通过pageNum、pageSize对数据进行处理,最终得到相应的分页数据。以下是处理数据得两种方法:
1、利用 Array.slice 截取想要的数组片段( 此方法要考虑 总页数为“1” 和 尾页 的情况

2、利用 Array.filter 过滤出想要的数组片段(此方法无需考虑 总页数为“1” 和 尾页 的情况,只要满足条件即可

    /**
     * 分页数据处理
     * @param data [Array] 需要分页的数据
     * @param num [Number] 当前第几页
     * @param size [Number] 每页显示多少条
     */
    getList(data, num, size) {
      let list, total, start, end, isFirst, isLast
      total = data.length
      isFirst = total < size
      isLast = Math.ceil(total / size) === num
      start = (num - 1) * size
      end = isFirst || isLast ? start + (total % size) : start + size
      list = data.slice(start, end)
      list.forEach((item, index) => {
        item.seq = index + start
      })
      return list
    }
    /**
     * 分页数据处理
     * @param data [Array] 需要分页的数据
     * @param num [Number] 当前第几页
     * @param size [Number] 每页显示多少条
     */
    getList(data, num, size) {
      let list, start, end
      start = (num - 1) * size
      end = start + size
      list = data.filter((item, index) => {
        return index >= start && index < end
      })
      list.forEach((item, index) => {
        item.seq = index + start
      })
      return list
    }

总结:无论是前端分页和还是后端分页,最终都需要拿到两个参数:pageNum(当前页)、pageSize(每页多少条)。

要实现基于 VueElementUI分页表格数据,你可以按照以下步骤进行操作: 1. 安装 VueElementUI: ```bash npm install vue element-ui --save ``` 2. 在你的代码引入 VueElementUI: ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 3. 创建一个分页表格组件(例如 PageTable.vue),并在其定义表格数据、分页信息和分页处理函数: ```html <template> <div> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> </el-table> <el-pagination :current-page="currentPage" :page-size="pageSize" :total="total" @current-change="handleCurrentChange" style="margin-top: 20px" ></el-pagination> </div> </template> <script> export default { data() { return { tableData: [], currentPage: 1, pageSize: 10, total: 0 } }, methods: { fetchData() { // 发送请求获取表格数据 // 并更新 this.tableData 和 this.total }, handleCurrentChange(page) { this.currentPage = page this.fetchData() } } } </script> ``` 4. 在父组件引入并使用 PageTable 组件: ```html <template> <div> <page-table></page-table> </div> </template> <script> import PageTable from './PageTable.vue' export default { components: { PageTable } } </script> ``` 在这个示例,我们使用ElementUI 的 el-table 和 el-pagination 组件来实现分页表格数据的显示和分页处理。在分页表格组件,我们定义了表格数据(tableData)、当前页码(currentPage)、每页显示条数(pageSize)和总条数(total),并在 fetchData 方法发送请求获取数据并更新这些属性。我们还定义了 handleCurrentChange 方法来响应分页组件的页码改变事件,并在其更新 currentPage 并调用 fetchData 方法获取新的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值