vue组件v-on=“$listeners“与重写事件,执行两次

比如 element 组件 el-select,change 事件重写,返回更多的参数:

<el-select @change="changeSelect" v-on="$listeners">xxx</el-select>

method: {
	changeSelect(val) {
		this.$emit('change', val) 
	}
}

使用:

<EccSelect @change="selectChange"></EccSelect>

结果: 执行2次 , 多一个 undefined

第一个是v-on=“$listeners”, 第二个是@change="onSelectChange
在这里插入图片描述

解决:去掉 @change=“changeSelect”, 使用 new$listeners 继承原有属性,并覆盖原有事件

<el-select v-on="new$listeners">xxx</el-select>
computed: {
    new$listeners() {
      return Object.assign(this.$listeners, {
        change: this.changeValue
      })
    }
  }

更多参考出处:

https://www.h5w3.com/112064.html

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值