elementUI的cascader级联选择控件使用采坑:设置默认值回显问题解与Cannot read property ‘level‘ of null问题

问题1:当点击切换第一个下拉菜单,第二个与之联动的cascader组件就会报Cannot read property ‘level’ of null ,如下图
在这里插入图片描述

 <el-cascader
            v-if="isTest"
            ref="locationCascader"
            @change="fnChangeChapter"
            v-model="chapterInfo"
            :options="chapterTree"
            :props="{
              value: 'id',
              label: 'name',
              children: 'list'
            }"
          />

原因分析:当我们切换第一个下拉菜单的选项的时候,第二个与之联动的数据会重新从后台获取, 即便设置了this.chapterInfo= [] ,但是cascader中的activePath还是未变动之前的值,也就是点击的父节点会被记录下来,加载到新数据的时候,activePath在新数据中找不到对应的,就会报错。

解决办法:我们可以在拉取新数据之前把activePath置空为空数组[],亲测有效具体如下

 resetChapterData() {
      this.chapterInfo = [];
      if (this.$refs.locationCascader) {
        this.$refs.locationCascader.$refs.panel.activePath = [];
      }
    },

问题2:有时候可能在项目中可能需要设置成缓存中的选项,当我设置成新的之后,回显中的更新了,但是下拉选项中没有更新
在这里插入图片描述
原因:当我们更新cascader中chapterInfo之后,但是activePath中的值还是之前选中的,因此在设置chapterInfo之前,需要把activePath置为空[]

解决办法:我们可以在设置新数据之前把activePath置空为空数组[],亲测有效具体如下

  setValue() {
      this.$refs.locationCascader.$refs.panel.activePath = [];
      this.chapterInfo = ['38be4ffeb5039431', 'd67f4b618f0d9ed4', '4abb431f8a7ebefb'];
    },
下面两行代码 当在此点出浮窗,可以回显到上次选择的路径
 this.$refs.area.panel.activePath = [];
 this.$refs.area.panel.syncActivePath();

减少踩空,人人有责。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值