vue element—–实现table前端分页

2023年6月7日11:06:52

代码实现展示:

<template>
  <div>
    <el-table :data="tableList" border style="width: 100%;">
      <el-table-column align="center" type="index" label="序号" width="50" />
      <el-table-column prop="id" header-align="center" align="center" label="缺陷ID" />
      <el-table-column prop="name" header-align="center" align="center" label="名称" />
    </el-table>
    <!-- 分页 -->
    <div class="pagination-container" align="center">
      <el-pagination :current-page="pageData.currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pageData.size" :total="pageData.total" layout="total, sizes, prev, pager, next, jumper"
        @size-change="handleSizeChange" @current-change="handleCurrentChange" />
    </div>
  </div>
</template>
<script>
export default {
  components: {},
  data() {
    return {
      pageData: {
        total: 0,//总条数
        size: 10,//默认每页显示10条
        currentPage: 1,//默认显示第一页
      },
      start: 0, // 处理前端分页数据保存
      end: 0, // 处理前端分页数据保存
      tableData: [],
      tableList: [], //table前端分页后显示数据
      dataVal: [
        { id: 1, name: "测试1" },
        { id: 2, name: "测试2" },
        { id: 3, name: "测试3" },
        { id: 4, name: "测试4" },
        { id: 5, name: "测试5" },
        { id: 6, name: "测试6" },
        { id: 7, name: "测试7" },
        { id: 8, name: "测试8" },
        { id: 9, name: "测试9" },
        { id: 10, name: "测试10" },
        { id: 11, name: "测试11" },
      ],//需要展示的所有数据
    };
  },

  created() {},
  mounted() {},

  computed: {},

  methods: {
    //获取数据的方法---假设现在获取到的数据就是dataVal,把this.dataVal赋给this.tableData,通过方法分段后,赋给this.tableList(table前端分页后显示数据)。
    getTableData() {
      this.tableList = [];
      this.tableData = [];
      // table数据处理
      this.tableData = this.dataVal;
      this.tableList = this.dataVal.slice(0, this.pageData.size);
      this.pageData.total = this.tableData.length;
      this.pageData.currentPage = 1;
      this.start = 0;
      this.end = this.pageData.size;
    },
    
    // 分页点击方法
    //改变每页展示的条数
    handleSizeChange(val) {
      const preTable = this.tableData.slice(0, this.start);
      const LastTable = this.tableData.slice(this.end);
      this.tableData = preTable.concat(this.tableList).concat(LastTable);
      this.pageData.size = val;
      this.start = this.pageData.size * (this.pageData.currentPage - 1);
      this.end =
        this.pageData.size * (this.pageData.currentPage - 1) +
        this.pageData.size;
      this.tableList = this.tableData.slice(
        this.pageData.size * (this.pageData.currentPage - 1),
        this.pageData.size * (this.pageData.currentPage - 1) +
          this.pageData.size
      );
    },
    //改变页码
    handleCurrentChange(val) {
      const preTable = this.tableData.slice(0, this.start);
      const LastTable = this.tableData.slice(this.end);
      this.tableData = preTable.concat(this.tableList).concat(LastTable);
      // 处理数据后分页
      this.pageData.currentPage = val;
      this.start = this.pageData.size * (this.pageData.currentPage - 1);
      this.end =
        this.pageData.size * (this.pageData.currentPage - 1) +
        this.pageData.size;
      this.tableList = this.tableData.slice(
        this.pageData.size * (this.pageData.currentPage - 1),
        this.pageData.size * (this.pageData.currentPage - 1) +
          this.pageData.size
      );
      console.log("显示tablelist", this.tableList);
    },
  },
};
</script>

分页效果:
vue element-----实现table前端分页

  • 作者:小tenten
  • 原文链接:https://blog.csdn.net/qq_39877681/article/details/128012791
    更新时间:2023年6月7日11:06:52 ,共 2546 字。