相关文章推荐
腼腆的绿豆  ·  laravel join 子查询 ...·  4 小时前    · 
文雅的小蝌蚪  ·  Maximum capacity ...·  3 天前    · 
着急的毛巾  ·  Row version change ...·  1 周前    · 
私奔的山楂  ·  QtDesigner和pyqt5编程_pyq ...·  1 年前    · 
想出国的钱包  ·  AgileBoot - ...·  1 年前    · 
帅气的黑框眼镜  ·  nginx - ...·  1 年前    · 
element-UI里的table表格与多选框CheckBox的组合很常用,官网也给了很多参数,自己总结了一下,方便日后使用
本博客源码: https://github.com/shengbid/vue-demo 这个项目里会把平时博客写的一些功能的代码都放在里面,有需要可以下载看看,有帮助的话点个star哈
1、简易用法,没有附加的功能
ref="checkTable" @selection -change="handleSelectionChange"> <!-- 只需在表格里多加一列.设置type="selection"就可以 --> <el-table- column type ="selection" width ="55"> </el-table-column> </el-table> // method handleSelectionChange (val) { console.log(val)
2、切换选中的表格,默认选中表格
使用表格的toggleRowSelection可以切换表格的选中状态,也可以设置表格的默认选中行
<!-- 在table中设置一个ref,就可以使用表格的方法了 -->
<el-table
  :data="tableData2"
  border
  style="width: 100%"
  ref="checkTable"
  @selection-change="handleSelectionChange">
  <el-table-column
    type="selection"
    width="55">
  </el-table-column>
</el-table>
// method
// 处理表格数据,已还款的自动选上
  handleCheckData () {
    let table = this.tableData2 // 从后台获取到的数据
    table.forEach(item => {
      if (item.status === '已还款') {
        // toggleRowSelection可以切换表格行的选中状态,接收两个参数第一个是要切换的行,这里需要的对象格式,
        // 第二个参数是设置选中还是不选中,不传的话会取与原来相反的选择状态
        // 方法调用要等元素挂载才后才能执行,这里加一个判断,这个方法要放在数据获取后
        this.$refs.checkTable && this.$refs.checkTable.toggleRowSelection(item, true)
3、设置表格行为不可选
通过selectable参数可以手动设置某些表格行未不可选择
<el-table
  :data="tableData2"
  border
  style="width: 100%"
  ref="checkTable"
  @selection-change="handleSelectionChange">
  <!-- 在type="selection的列里添加selectable参数,通过函数返回true或false可以设置是否可选" -->
  <el-table-column
    type="selection"
    :selectable="handleDisable"
    width="55">
  </el-table-column>
</el-table>
// method
// 处理表格数据,未还款的默认不能勾选
// 有两个参数返回,表格的每一行对象和当前索引
handleDisable(row, index) {
  // 函数需要一个返回值,true为可选,false为不可选择
  if (row.status === '未还款') {
    return false
  } else {
    return true
  :row-key="handleReserve"
  @selection-change="handleSelectionChange">
  <!-- 在type="selection的列里添加reserve-selection参数,true为保留数据,默认为false不保留 -->
  <el-table-column
    type="selection"
    reserve-selection
    width="55">
  </el-table-column>
</el-table>
// method
// 表格数据处理,保存上一页选中的数据
// 返回的参数是每一行的值,需要指定表格数据的唯一值,一般是id
handleReserve (row) {
  return row.id
补充内容:
select的reserve-selection和toggleRowSelection一起用时,比如下面的场景,选择左边表格数据,右边对应展示列表,点击右边的列表也能控制左边的表格选中状态
这种场景会出现一个问题,当你在第一页选中数据,跳转到第二页又选择数据,再跳转回第一页时,删除第一页选中的数据会不能取消选中状态,具体如图
<ul class="list"> <li v-for="(item, index) in list" :key="index" class="item"> {{ item.name }} <el-button type="text" @click="removeName(item)">删除</el-button> methods: { // 表格选中 handleSelectionChange(val) { console.log('选中的表格', val) this.list = val // 删除,取消表格选中 removeName(item) { this.$refs.checkTable && this.$refs.checkTable.toggleRowSelection(item, false)

出现这种问题的原因是因为当你从第二页跳转回第一页,你的tableData是从后台从新获取并赋值的,在当前页取消选中状态时,列表里的item和左边表格tableData里的数据虽然值一样,但是此时他们指向的内存地址不一样.所以,不能再传列表里的item了

handleSelectionChange(val) {
      console.log('选中的表格', val)
      this.list = val
    // 删除,取消表格选中
    removeName(item) {
      const arr = this.tableData.filter(sub => { return sub.id === item.id }) // 取消当前表格里的选中状态时,用表格里的数据
      const row = arr.length ? arr[0] : item
      // console.log(item, row)
      this.$refs.checkTable && this.$refs.checkTable.toggleRowSelection(row, false)