el-cascader级联选择器的子菜单双击两次才显示被选中的内容

最近碰到这样一个错误,子菜单要点击两次,它的值才显示在选择器栏中,点击一次能获取到值,但是就是不显示.代码如下:

这里需要注意,通过给级联选择器绑定的监听选项切换事件@change="handleChange",我们切换选项的时候,可以在这个方法中通过以下方式来获取到选中选项从一级到最末级的所有的value值数组,

举例:级联选择器的数组如下
  {
  partKey:'a',
  partName:'一级设备',
  children:[
    {
       partKey:'a1',
       partName:'二级设备1',
    },
    { 
      partKey:'a2',
      partName:'二级设备2',}
    ]
}

// 此时加入选中的是二级设备2

则this.checkedAllValue=['a','a2']

// 这里的nodeName是级联选择器中定义的ref属性,checkedValue是refs自身的方法,直接用就行
this.checkedAllValue = this.$refs["nodeName"].checkedValue;

但是我们最终用到的只有当前选中的那一级的值 ,就修改成下面这样,变量记得在data中定义一下哈!

this.checkedPartKey = this.$refs["nodeName"].checkedValue[1];

然后在handleChange方法中对当前级联选择器绑定的数组进行遍历,使用forEach()方法,将当前选中的 checkedPartKey与数组中每一项的partKey进行匹配,相同时,就把当前这一项的partName赋给在data中定义的checkedPartName,最后提交表单的时候就把他赋给partName,这样发送请求时携带的partName就是上面举例的数组中被选中选项子菜单的partName值了

如果不这样操作,发送请求时和其他的一样写成this.dataForm.partName的话,传过去的值是一个数组,传过去的值我记不太清了,反正是不符合要求的

// 监听级联选择器选项发生变化的事件
    handleChange() {
      this.checkedPartKey = this.$refs["nodeName"].checkedValue[1];
      this.nodeNameOptions.forEach((item, index, nodeNameOptions) => {
        let itemArr = item.children;
        itemArr.forEach((item1, index, itemArr) => {
          if (this.checkedPartKey == item1.partKey) {
            this.checkedPartName = item1.partName;
          }
        });
      });
    },

-------------------------------------------------------------------------------------------------------------------------------

我忽然想到,不用定义checkedPartName这个变量,你在匹配到以后,直接让this.dataForm.partName=匹配项的partName应该也可以吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值