el-cascader级联选择使用clearCheckedNodes清空路径失效的解决办法
1. 如果是搜索功能,点重置按钮,清空级联选择器数据和路径,可以使用下面方法

<el-form-item label="地区" prop="selectedRegion">
<el-cascader
ref="cascader"
filterable
clearable
:options="options"
v-model="selectedRegion"
@change="regionChoose"
></el-cascader>
</el-form-item>
this.$refs.cascader.$refs.panel.checkedValue = []; // 清空选中值
this.$refs.cascader.$refs.panel.clearCheckedNodes(); // 清空级联选择器选中状态
this.$refs.cascader.$refs.panel.activePath = []; // 清除高亮
this.$refs.cascader.$refs.panel.syncActivePath(); // 初始化(只展示一级节点)
2. 如果是form表单需要回显,使用上面的方式会导致回显失败

网上搜了很多清除cascader组件的选中状态的方法,那么它怎么清除cascader组件的选中状态呢?其实现在官方还没有这类的api。
有人建议改源码,但是我不想动源码,所以想到了使用 v-if 将 <el-cascade> 进行初始化,这样就解决问题啦!
2.1 在el-form-item,添加 v-if="ShowCascader"
<el-form-item label="地区" prop="selectedRegion" v-if="ShowCascader">
<el-cascader
style="width: 100%"
filterable
clearable
:options="options"
v-model="selectedRegion"
@change="regionChoose"
></el-cascader>
</el-form-item>
2.2 设置默认值
data() {
return {
// 默认不显示
ShowCascader: false
};
2.3 点击新增/编辑按钮,显示弹框之前把状态改为true
/** 新增按钮操作 */
handleAdd() {
this.ShowCascader = true
this.openDialog = true;
},
2.4 点击关闭按钮,把状态改为false
this.ShowCascader = false

浙公网安备 33010602011771号