el-select框在 @change和remove-tag事件同时使用时,踩过的坑

。。。翻了很多资料,一直没有找到对于el-select框在 @change和remove-tag事件同时使用时,处理事件先后顺序的问题
不过结论是终于解决了(liao)
所以决定把这次的踩坑记录存下来,方便后来者也遇到类似的问题可参考解决方案~
如果后续有问题或者新思路可以联系我哟~

一、踩坑前准备

  1. select 框 可多选
  2. select 框 可进行change事件
  3. select 框 可进行remove事件
  4. 远程(动态接口)获取下拉框数据

二、踩坑描述

  1. 根据每次选中的item数据详情,取到对应的某个属性dataType来做数据校验,由于数据是靠远程搜索的,所以需要定义一个全局变量先来存储该数据值
  2. 新增的情况: 每次取数据的最后一条作为详情,通常会在change事件中来写这部分的逻辑
  3. 编辑的情况:和后端配合完成,后端会返回个类型,从而在前端的角度来讲,也算新增
  4. 删除的情况:踩坑来啦,对于多选的 select 组件,当点击移除标签时,通常会先触发 change 事件,然后触发 remove 事件。这是因为移除标签会导致选中值发生变化,从而触发 change 事件。因为在 change 事件中已经有对数据的最后一条做了写逻辑处理(同2),所以,在删除时,也会走这块逻辑,这样是错误的,本身删除应该走对应remove的逻辑。

三、解决思路

说到这里, 可能迫不及待的想知道如何解决的啦,下面我就简单概括一下:
其实解决方案看着很简单,只是我们不太关注
思路:
为了实现在移除标签时先调用 remove 事件再调用 change 事件,可以使用 Vue 的 $nextTick 方法。以下是一个示例:

  1. 在 Vue 实例的 data 中添加一个标志变量,例如 isRemoving:
data() {
  return {
    is
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值