t-table 表格 @expand-change 判断收缩还是展开方法

t-table 表格 @expand-change 判断收缩还是展开方法.

根据官方文档,该方法返回两个参数,所以通过参数来校验,通过 Array 跟 当前选中的 value 来判断展开还是收缩。

因为展开我这边展开是要调用接口的,所以要用到判断展开还是收缩的方法

expand-change(expandedRowKeys: Array<string | number>, options: ExpandOptions<T>)展开行发生变化时触发,泛型 T 指表格数据类型。详细类型定义
interface ExpandOptions<T> { expandedRowData: Array<T>; currentRowData: T }

方案示例代码:

方案实战示例效果

对比 element-plus 代码如下方式,通过@expand-change 方法

 当用户对某一行展开或者关闭的时候会触发该事件(展开行时,回调的第二个参数为 expandedRows;树形表格时第二参数为 expanded)

	const handleExpandChange = async (row, expandRows) => {
		try {
			if (expandRows && expandRows.length) {
				let res = await queryListApi({
					id: row.id
				});

				console.log(res);
			}
		} catch (error) {
			console.error(error);
		}
	};
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下方式来实现鼠标滑过 el-table 表格行时展开和关闭的效果: 1. 在 el-table 组件中添加 :row-class-name="tableRowClassName" 属性,它会为每一行添加一个 class 名称,用于自定义该行的样式。 2. 在 Vue 实例中定义 tableRowClassName 方法,它会根据行数据和行索引返回一个 class 名称,用于控制该行的样式。在这个方法中,你可以判断当前行是否展开,如果是则返回一个特定的 class 名称,否则返回空字符串。 3. 在 el-table 组件中添加 @mouseenter 和 @mouseleave 事件监听器,用于在鼠标滑过和离开表格行时触发相应的方法。 4. 在 Vue 实例中定义 handleRowMouseEnter 和 handleRowMouseLeave 方法,它们会根据传入的行索引和事件类型来展开或关闭该行。 下面是一个示例代码: ```html <el-table :data="tableData" :row-class-name="tableRowClassName" @mouseenter="handleRowMouseEnter" @mouseleave="handleRowMouseLeave"> <el-table-column prop="name" label="Name"></el-table-column> <el-table-column prop="age" label="Age"></el-table-column> </el-table> ``` ```javascript export default { data() { return { tableData: [ { name: 'John', age: 20, expanded: false }, { name: 'Mary', age: 25, expanded: false }, { name: 'Tom', age: 30, expanded: false } ] } }, methods: { tableRowClassName({ row }) { return row.expanded ? 'expanded-row' : '' }, handleRowMouseEnter(index) { this.expandRow(index) }, handleRowMouseLeave(index) { this.collapseRow(index) }, expandRow(index) { this.$set(this.tableData[index], 'expanded', true) }, collapseRow(index) { this.$set(this.tableData[index], 'expanded', false) } } } ``` 在上面的代码中,我们在表格数据中添加了一个 expanded 属性来标记每行是否展开。在 tableRowClassName 方法中,我们根据该属性返回了一个特定的 class 名称,用于控制行的样式。 在 handleRowMouseEnter 和 handleRowMouseLeave 方法中,我们根据传入的行索引来调用 expandRow 或 collapseRow 方法,从而展开或关闭该行。在这些方法中,我们使用 Vue.set 方法来更新 tableData 中的数据,以便触发响应式更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值