Cascader 级联选择器使用踩坑记

本文解决Cascader级联选择器在动态数据源切换时出现TypeError的问题,并提供清除已选中数据的方法。

1. 报错: Error in callback for watcher "options": "TypeError: Cannot read property 'level' of null"

  • 原因: 使用Cascader 级联选择器动态获取数据时如果已经有选中的值,切换数据源之后如果切换后的数据源没有之前选中的值就会报错
  • 解决方案:
    给cascader设置一个key,监控数据源的改变,当数据源变更时也改变key值,key值改变了,cascader就会重新渲染
	ref="originTemplatePath"
	:key="originTemplatePathCascaderKey"
	:options="originTemplatePathOptions"
	:props="{ checkStrictly: true }"
	clearable
	filterable
/>
  watch:{
    originChoiceTemplate(val) {
      // 当数据源改变将当前选中的数据清空
      this.$refs.originTemplatePath.$refs.panel.clearCheckedNodes()
      if (val) {
        // 对key值加1,重新渲染cascader
        ++this.originTemplatePathCascaderKey
        this.showTemplateTreeWithTemplateName(val)
      }
    }
  }

2. 如何清空cascader中已经选中的数据,官方没有提供清空的方法:

  • 解决方案:
    给cascarde一个ref=“originTemplatePath”(按照你的前后文自定义),然后调用this.$refs.originTemplatePath.$refs.panel.clearCheckedNodes()清空
### 使用指南 在Vue 3和Element Plus框架中,Cascader级联选择器可用于选择关联的数据,提供了简单使用及回显设置的功能。简单使用时可通过如下代码实现,设置下拉选项值,使用`placeholder`属性设置占位符,`options`绑定数据源,`filterable`开启过滤功能,`v-model`进行双向数据绑定,`@change`监听选择变化事件并绑定处理函数,`props`设置级联选择器属性 [^2]: ```vue <el-cascader placeholder="商品信息" :options="dataSource.goodIds" filterable v-model="goodsIdAndShopId" @change="syncChangeGoodsIdAndShopId" :props="props" /> ``` ### 示例代码 #### 简单示例 在表单中使用Cascader级联选择器,设置了占位符、双向数据绑定、属性和选择变化的处理函数 [^3]: ```vue <el-form-item label="活动分类"> <el-cascader clearable placeholder="请选择活动分类" v-model="classify_value" :key="refreshClassify" :props="classifyProps" @change="handleChange" ></el-cascader> </el-form-item> ``` #### 动态数据懒加载示例 每一个接口针对不同的数据库表返回对应的数据, 当前端页面点击父级标签时,会把该父级标签的`parentId`传递给查询`childTag`数据库表的后端接口,该后端接口根据传递的`parentId`进行查询该父级标签下的所有子标签,然后再返回给前端 [^4]。 ### 常见问题解决方案 #### 动态数据懒加载+回显问题 在vue3 + element plus项目开发中使用级联选择器`el-cascader`组件,数据列表节点是懒加载(动态数据)时,会遇到回显数据问题。无论数据列表结构如何,都能通过详细教程解决单选级联选择器、多选级联选择器在编辑时的回显数据问题,还提供了动态加载时的回显解决方法以及三级联动数据回显示例代码 [^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学习的狮王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值