<template>
  <div class=“wrap”>
    <!– <el-card> –>
      <el-table :data=tableData border stripe style=width: 100%>
        <el-table-column prop=“id” label=“编号” width=“180”></el-table-column>
        <el-table-column prop=“date” label=“日期” width=“180”></el-table-column>
        <el-table-column prop=“name” label=“姓名” width=“180”></el-table-column>
        <el-table-column prop=“address” label=“地址”></el-table-column>
      </el-table>
      <el-pagination
        @size-change=handleSizeChange
        @current-change=handleCurrentChange
        :current-page=query.pageNum
        :page-sizes=[2, 3, 4, 5,10]
        :page-size=query.pageSize
        layout=“total, sizes, prev, pager, next, jumper”
        :total=query.total
      ></el-pagination>
    <!– </el-card> –>
  </div>
</template>
<script>
export default {
  data() {
    return {
      //table 表数据
      tableData: [],
      //分页数据
      query: {
        pageNum: 1,
        pageSize: 5,
        total: 0
      }
    };
  },
  mounted() {
    this.getData();
  },
  methods: {
    getData() {
      this.tableValue();
      //table总数据
      const AllData = this.tableData;
      //每次执行方法,将展示的数据清空
      this.tableData=[]
      //第一步:当前页的第一条数据在总数据中的位置
      let starLength = (this.query.pageNum1) * this.query.pageSize + 1;
      //第二步:当前页的最后一条数据在总数据中的位置
      let endlength = this.query.pageNum * this.query.pageSize;
      //第三步:此判断很重要,执行时机:当分页的页数在最后一页时,进行重新筛选获取数据时
      //获取本次表格最后一页第一条数据所在的位置的长度
    let resstarLength=0
      if(AllData.length % this.query.pageSize == 0){
        resstarLength = (parseInt(AllData.length / this.query.pageSize)-1) * this.query.pageSize + 1
      }else{
        resstarLength = parseInt(AllData.length / this.query.pageSize) * this.query.pageSize + 1
      }
      //如果上一次表格的最后一页第一条数据所在的位置的长度 大于 本次表格最后一页第一条数据所在的位置的长度,则将本次表格的最后一页第一条数据所在的位置的长度 为最后长度
      if(starLength>resstarLength){
        starLength=resstarLength
      }
      //第四步:此判断很重要,当分页的页数切换至最后一页,如果最后一页获取到的数据长度不足最后一页设置的长度,则将设置的长度 以 获取到的数据长度 为最后长度
      if (endlength > AllData.length) {
        endlength = AllData.length;
      }
      //第五步:循环获取当前页数的数据,放入展示的数组中
      for (let i = starLength1; i < endlength; i++) {
        this.tableData.push(AllData[i]);
      }
      //数据的总条数
      this.query.total = AllData.length;
    },
    //切换当前页显示的数据条数,执行方法
    handleSizeChange(val) {
      console.log(`每页 ${val} 条`);
      this.query.pageSize=val
      this.getData()
    },
    //切换页数,执行方法
    handleCurrentChange(val) {
      console.log(`当前页: ${val}`);
      this.query.pageNum=val
      this.getData()
    },
    //向表中添加数据
    tableValue(){
      for(let i = 1; i<=50;i++){
        this.tableData.push({
          id: i,
          date: “2016-05-03”,
          name: “王小虎”+i,
          address: “上海市普陀区金沙江路”+ i + “弄”
        })
      }
    }
  },
};
</script>
<style scoped>
.wrap {
  width: 100%;
  height: 100%;
}
.el-pagination {
  margin-top: 15px;
}
</style>

原文地址:http://www.cnblogs.com/devilben/p/16866548.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性