vue el-cascader组件change失效以及下拉框不消失的问题

1.前言

最近项目上用到el-cascader这个组件,需要可以选第一级菜单,也需要可以选第二级菜单,点击完成之后需要关闭下拉框。其实功能比较简单,找了很多资料,没有找到合适的方案,下面还是自己想了个方案才解决问题

2. 碰到的问题

1.如何让下拉框消失?
2.change方法只是值发生改变才会触发,如果是同一个值就不会触发这个方法,我看有些人还去改源码?

3. 如何解决这两个问题

首先需要change方法

    //关闭联级面板
    cascaderChange() {
      //监听值发生变化就关闭它
      this.$refs.cascaderLocation.dropDownVisible = false;
      this.$refs.cascaderType.dropDownVisible = false;
    },

然后还需要visible-change这个方法,当下拉框出现值为true,下拉框消失值为false

//地点
<el-cascader
  v-model="formSearch.location"
  :show-all-levels="false"
  :options="locations"
  :props="{ checkStrictly: true, expandTrigger: 'hover' }"
  ref="cascaderLocation"
  @change="cascaderChange"
  clearable
  style="width:210px;"
  @visible-change="value => cascaderVisibleChange(value, 'location')"
></el-cascader>

//算法类型
<el-cascader
  v-model="formSearch.type"
  :show-all-levels="false"
  :options="algorithms"
  :props="{ checkStrictly: true, expandTrigger: 'hover' }"
  style="width:130px;"
  ref="cascaderType"
  @change="cascaderChange"
  @visible-change="value => cascaderVisibleChange(value, 'type')"
></el-cascader>

项目里面用了两种类型的,逻辑是当点开下拉框,先把原始值保存起来,再把值直接赋值为空,保存起来的目的是防止用户没选直接关闭了下拉框,这种情况就需要用到原来保存起来的值

cascaderVisibleChange(value, type) {
  if (value) {
    if (type == "location") {
      this.oldLocation = this.formSearch.location;
      this.formSearch.location = "";
    } else if (type == "type") {
      this.oldType = this.formSearch.type;
      this.formSearch.type = "";
    }
  } else {
    if (type == "location" && !this.formSearch.location) {
      this.formSearch.location = this.oldLocation;
    } else if (type == "type" && !this.formSearch.type) {
      this.formSearch.type = this.oldType;
    }
  }
}

结果如下图:
在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值