表格常用方法(事件)的封装--单选/多选

表格常用方法(事件)的封装–单选/多选


之前基于el-table二次封装的表格可以自定义插槽展示
按理说已经可以满足所有的表格

但是表格还有很多操作, 比如单选多选排序等…

我们可以基于这个组件进行封装

单选/多选

element-ui自带的表格封装有自己的多选框
来自Element-ui
这样我们的表格就会出现一列多选框
在这里插入图片描述

但是这个是多选框, el-table没有单选框, 要实现单选效果需要我们自己实现

我们可以借助el-table封装好的事件和方法来实现多选框单选的效果

  • select 事件: 当用户手动勾选数据行的 Checkbox 时触发的事件
  • selection-change 事件: 当选择项发生变化时会触发该事件
  • clearSelection 方法: 用于清空所有选择的Checkbox
  • toggleRowSelection 方法: 改变某一行的选中状态
思路

通过父组件传递的一个props来判断当前表格是单选还是多选, 然后当触发select事件时, 判断是单选还是多选
----如果是单选则取消所有的勾选, 然后将当前row选中
----如果是多选则直接将数据抛出即可

实现代码

以下代码是在上一篇的表格组件的基础上继续封装!!!

<el-table
    :data="tableData"
    border
    class="table"
    ref="multipleTable"
    header-cell-class-name="table-header"
    @selection-change="handleSelectionChange"
    
    @select="select"
    @selection-change="handleSelectionChange"
>
	<el-table-column
        v-if="showSelectionColumn"
        type="selection" >
    </el-table-column>
	// ...
	// ...
	// ...
</el-table>

// 伪代码
// 在props里接收是否需要多选框和选框的类型(single or multiple)
props: {
	showSelectionColumn: {
      type: Boolean,
	  default: false
	}, // 是否显示多选框
	chooseType: {
      type: String,
      default: 'single'
    } // 多选框选择类型  single / multiple
}

// 伪代码
// 核心方法
/**
 * @param selection 已经选择的数组
 * @param row 当前选中行
 */
select(selection, row) {
  if(this.chooseType === 'single') {
    // 取消所有勾选
    this.$refs.dataTable.clearSelection();
    // 都没被勾选返回
    if(selection.length == 0) return;
    // 将当前行选中
    this.$refs.dataTable.toggleRowSelection(row, true);
    this.$emit('handle-selection', row);
  }else {
    this.$emit('handle-selection', selection);
    return;
  }
},
handleSelectionChange(val) {
    this.$emit('get-select-data', val);
}

这样我们就可以自己来规定我们的表格是单选还是多选啦!
欢迎大家一起讨论学习~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值