el-table中多选选中行后,换页不丢失之前选中

本文意在解决用 element-ui 中 table 时,需要选中行,并且结合分页做翻页操作时,保留前一页选中
话不多说直接上代码

html部分

<!-- html代码块 -->
<!-- 表体 -->
<el-table
    ref="multipleTable"
    :data="tableData"
    row-key="index"
    @selection-change="selectionChange">
    <el-table-column type="selection" :reserve-selection="true" fixed="left" />
    <el-table-column prop="index" label="序号"  />
    ...
</el-table>	
<!-- 分页 -->
<el-pagination
    layout="total, sizes, prev, pager, next"
    :current-page.sync="currentPage"
    :page-size="pageSize"
    :total="total"
    @size-change="handleSizeChange"
    @current-change="handleCurrentChange"></el-pagination>
  • el-table中要设置row-key,并设置tableData中的唯一值,比如index(若不设置时方法不生效、设置错误或值不唯一时控制台会报错);
  • el-table-column中的selection选框列设置reserve-selection为true(数据更新之后保留之前选中的数据)

js部分

// js代码块
selectionChange(val){
  this.tableSelectList = val
}
  • 该方法在选中状态改变时(选中、取消)触发,可拿到选中行的全量数据供某些功能使用,比如:接口数据提交

拓展

表格配合表单查询时(或其他类似操作),每次执行查询需要将选中列表清除,但翻页时不清除

// js代码块
search(clean = true){
  this.tableData.splice(0) // 每次先将表格数据清除
  getTableData({ // 模拟接口
    ...data // 表单数据
  }).then(res => {
    this.tableData = res.List
    this.total = res.Total
    clean && this.$refs.multipleTable && this.$refs.multipleTable.clearSelection() 
    // clean 为 true 时清除选中,分页时传 false 则不会触发
  }  
},
handleSizeChange(val){
  this.pageSize = val
  this.currentPage = 1 // 改变页容,先将当前页码归 1
  this.search(false)
},
handleCurrentChange(val){
  this.currentPage = val
  this.search(false)
},

其实严格来说每次执行查询也要将当前页归1,此处就省略啦(狗头保命 o.0)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值