每一年都奔走在自己热爱里

没有人是一座孤岛,总有谁爱着你

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

 

posted @ 2025-10-29 14:38  helloliyh  阅读(7)  评论(0)    收藏  举报