el-cascader默认展开第一行所有子项

  1. 先定义一个ref
    <el-cascader
        ref="cascader"
        :model-value="modelValue"
        @change="handleChange"
        @visible-change="visibleChange"
      />
  2. 在下拉框显示的时候,获取展开的菜单:this.$refs.cascader.cascaderPanelRef.menus
  3. 打印出来发现,获取到的是当前展开的一项菜单数组,如果展开了两个菜单,就是两个数组,以此类推,并且每项菜单数组,返回的都是当前项及子菜单数组
  4. 在每次显示下拉框的时候,渲染除所有子菜单数据
     visibleChange(val) {
            if (!val) return;
            if (!this.modelValue) {
              this.$nextTick(() => {
                // 未选择过数据,默认展开第一行数据
                let data = this.$refs.cascader.cascaderPanelRef.menus;
                let child1 = data[0][0]?.children;
                let child2 = child1[0]?.children;
                let child3 = child2[0]?.children;
                let arr = [];
                data[0] && arr.push(data[0]);
                child1 && arr.push(child1);
                child2 && arr.push(child2);
                child3 && arr.push(child3);
                this.$refs.cascader.cascaderPanelRef.menus = arr;
              });
            } else if (this.modelValue && this.hasShown) {
              // 选择过数据
              this.$refs.cascader.cascaderPanelRef.menus = this.menusData;
            } else {
              // 未选择过数据,但是赋初始值了
              this.menusData = this.$refs.cascader.cascaderPanelRef.menus;
            }
            //判断是否显示过下拉框
            this.hasShown = true;
          },
  5. 在改变级联数据的时候,同步需要显示的级联子菜单
     handleChange(val) {
            this.menusData = this.$refs.cascader.cascaderPanelRef.menus;
            this.modelValue = val
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值