elementUI-table模糊搜索,不改变selection选中状态

首先模糊搜索,参考文章
利用 Vue 和 element 的实现table表格数据的模糊匹配搜索
原理是利用计算属性computed对表格进行筛选

但是如果是带有复选框的表格,会出现搜索重置选中状态的问题,搜了一大堆解决办法,发现最终可以使用element-ui提供的reserve-selection轻松解决。

注意:reserve-selection仅对 type=selection 的列有效,类型为 Boolean,为 true时会在数据更新之后记住之前选择的数据(需要指定row-key)

主要代码如下:

<el-table
    :data="tables"
    :row-key="getRowKey"
    ref="sort"
>
    <el-table-column
      type="selection"
      :reserve-selection="true">
    </el-table-column>
    <el-table-column
      prop="id"
      label="编号">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名">
    </el-table-column>
    <el-table-column
      prop="phone"
      label="手机号">
    </el-table-column>
</el-table>

注意tableData初始化的时候要为[ ],而不能为null,要不会报错
"TypeError: Cannot read property ‘reduce’ of null"

data() {
  return {
    tableData: [],
    search: '',
  }
},
computed: {
  tables: function() {
    const search = this.search
    if (search) {
      return this.tableData.filter(data => {
        return Object.keys(data).some(key => {
          return String(data[key]).toLowerCase().indexOf(search) > -1
        })
      })
    }
    return this.tableData
  }
},
methods: {
    // 指定一个key标识这一行的数据
    getRowKey (row) {
      return row.id //id为row的data属性之一,必须唯一且与tableData中保持一致
    }
}

如果有的事件不需要保存选中状态,则可在相应函数中添加如下代码:

this.$refs.sort.clearSelection()  //此sort与<el-table>中ref="sort"保持一致

此方法很简单,而且可以解决分页失去选中状态的问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值