实现列表数据分页

纯前端处理分页

1.首先是写好列表和分页(element组件)

//slice(startIndex, endIndex)是用来切割每页数据的,获取当前页数据是总数据的第几条
<el-table :data="rightTableData.slice(startIndex, endIndex)" style="width: 100%" size="medium" :show-overflow-tooltip="true" max-height="400px" @row-click="tableRowDetail">
        <div v-if="typeClick == '煤矿'">
          <el-table-column prop="ssqymc" label="所属企业"> </el-table-column>
          <el-table-column prop="dwmc" label="名称"> </el-table-column>
          <el-table-column prop="mklx" label="类型" width="50">
          </el-table-column>
          <el-table-column prop="address" label="地址"> </el-table-column>
          <el-table-column prop="jjsj" label="建矿时间"> </el-table-column>
        </div>
</el-table>
//handleCurrentChange是用来获取切换到的pageNumber也就是获取当前在第几页
//pageSize是每页的数据是多少个
//tableTotal是总共有多少条数据
<el-pagination @current-change="handleCurrentChange" :page-size="pageSize" layout="prev, pager, next" :total="tableTotal" :small="true">
</el-pagination>

2.处理分页

computed: {
    startIndex() {
      return (this.pageNumber - 1) * this.pageSize;
    },
    endIndex() {
      return this.pageNumber * this.pageSize;
    },
}

3.通过handleCurrentChange获取到当前页的页码,赋值给pageNumber,从而实现上一步中处理分页的计算

handleCurrentChange(val) {
  this.pageNumber = val;
},

后端处理分页

后端处理分页可以优化数据响应速度,主要运用在数据特别多的时候

后端处理分页的主要思路是监控当前点击的页码是多少,然后根据每页有多少条数据,将这俩参数返回给后端,后端返回当前页的数据,然后渲染上去(简单来讲就是后端只返回当前页数据,而其它页数据是空的,所以响应速度就很快,但是每点击一个页码,就要调一次接口,传递页码参数,获取数据)

1.写好列表和分页

//rightTableData是table表格的数据
<el-table :data="rightTableData" style="width: 100%" size="medium" :show-overflow-tooltip="true" max-height="400px" @row-click="tableRowDetail">
        <div v-if="typeClick == '煤矿'">
          <el-table-column prop="ssqymc" label="所属企业"> </el-table-column>
          <el-table-column prop="dwmc" label="名称"> </el-table-column>
          <el-table-column prop="mklx" label="类型" width="50">
          </el-table-column>
          <el-table-column prop="address" label="地址"> </el-table-column>
          <el-table-column prop="jjsj" label="建矿时间"> </el-table-column>
        </div>
</el-table>
//handleCurrentChange是用来获取切换到的pageNumber也就是获取当前在第几页
//pageSize是每页的数据是多少个
//tableTotal是总共有多少条数据
<el-pagination @current-change="handleCurrentChange" :page-size="pageSize" layout="prev, pager, next" :total="tableTotal" :small="true">
</el-pagination>

2.调用接口,获取数据

async searchDetail() {
    //调用接口,接口中一定要包含参数每页数据数量pageSize和页码pageNumber,这俩参数1控制当前页所获取的数据的
    let { data } = await axios.get(`/fxpc-jk/zdjc/getTableData?id=${this.cid}&type=3&tableId=${this.tableSearchUrl}&search=${this.searchValue}&pageSize=${this.pageSize}&pageNumber=${this.pageNumber}`);
    //将获取到的数据放在table列表中
    this.rightTableData = data.result
    //这里一定要使用的是后端接口中的total,获取到的是总数据数量,如果用rightTableData.length,获取到的将永远是pageSize的数量,因为接口每次返回的只是当前页的数量也就是pageSize的数量
    this.tableTotal = data.total;
}

3.通过handleCurrentChange获取到当前页的页码,赋值给pageNumber(简单说就是监控当前点击到的是哪一页

handleCurrentChange(val) {
  this.pageNumber = val;
},

4.监控页码pageNumber切换时,要调用接口,获取新的页码数据

watch: {
    pageNumber() {
      this.searchDetail()
    }
}

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值