el-select 的 v-model 绑定了一个对象,通过 clearable 清空后类型发生变化

1 问题描述

如下代码所示,v-model 中绑定的值是对象类型,给 el-select 添加 clearable 属性后,当点击 × 清空选择器中选中的选项后,经过 console.log(typeof (taskType.selectedTaskType)) 打印发现 v-model 绑定的值的类型由 object 变为了 string

<el-select
	clearable
    v-model="taskType.selectedTaskType"
    value-key="value"
    placeholder="请选择任务类型"
    @change="(val) => handleSelectChange(val)"
>
	<el-option
    	v-for="item in taskType.taskTypeList"
        :key="item.value"
        :label="item.name"
        :value="item"
    ></el-option>
</el-select>

2 引发原因

Element Plus 处理 el-select 清空选项的源码如下:

handleClearClick(event) {
	this.deleteSelected(event);
},

deleteSelected(event) {
	event.stopPropagation();
	const value = this.multiple ? [] : '';
    this.emit('input', value); 
    this.emitChange(value); 
    this.visible = false; 
    this.emit('clear');
}

通过源码可以当点击 × 清空后,value 被赋值为空字符串 ‘’。

3 解决方法

重写 el-selectclear 事件,给 value 重新赋值。

<el-select
	...
	@clear="taskType.selectedTaskType = { value: '', type: '' }"
></el-select>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vesuvius688

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值