【elementUI】级联选择器cascader数据回显

Vue ElementUI 级联选择器回显数据实践
本文介绍了如何在Vue中使用ElementUI的级联选择器(cascader)实现已选择数据的回显。通过利用getCheckedNodes方法获取选择过的节点,并将最底层节点的path绑定到v-model,可以展示已选路径。关键在于筛选出children为空的节点,其path即为选定的完整路径,从而实现数据的正确显示。

elementUI的级联选择器cascader文档是没有如何回显已选择过的数据的样例和方法。但我们可以通过官方文档的getCheckedNodes方法来拿到选择过的数据然后再用v-model来绑定,这样就可以回显数据了

在这里插入图片描述

ps:我设置的cascader是多选的

下图是打印getCheckedNodes()返回的数据,我们找到children为空的那个数据,path字段就是其中一个选中的数据路径。

我们把所有children为空的path字段存到个数组里,绑定cascader的v-model就可以显示数据了。

在这里插入图片描述

Tips:children为空代表这个数据是最底层的那级,它的path就是完整的路径

### el-cascader 级联选择器回显不自动选中的解决方案 对于 `el-cascader` 组件在懒加载模式下的回显问题,如果发现选项未能正常打勾,则可能是由于级联选择器无法识别已有的路径或节点。为了确保回显功能能够正确工作,可以采取以下措施: #### 设置 `props.lazyLoad` 当配置 `lazy-load` 属性时,需保证该函数不仅负责异步加载子项,还应处理缓存机制以便于后续访问相同分支时不重复请求数据。这有助于提高用户体验并减少不必要的网络调用。 ```javascript // 定义 lazy load 方法 const lazyLoad = (node, resolve) => { const { level } = node; setTimeout(() => { let children; if (level === 0) { // 加载根级别数据... } else { // 根据当前节点获取其子节点... } // 缓存加载的结果供下次快速响应 cache[node.value] = children; resolve(children); }, 1000); // 模拟延迟效果 }; ``` #### 使用 `emitPath=false` 有时即使设置了正确的值也无法让对应的选项被标记为选中状态。此时可以通过设置属性 `emit-path="false"` 来改变默认行为,使得 v-model 接收整个对象而非仅限于 id 数组形式[^3]。 ```html <el-cascader :options="options" @expand-change="handleItemChange" :props="{ checkStrictly: true, emitPath: false }" ></el-cascader> ``` #### 处理 `checkStrictly=true` 通过启用严格模式 (`checkStrictly`) 可以允许单独选择任意层级上的节点而不会影响其他关联的选择情况。这对于某些特殊业务逻辑非常有用,比如只关心最终叶子结点而不必在意中间经过哪些父类目。 #### 初始化前预填充数据 考虑到懒加载特性可能导致初次渲染时缺少部分必要信息,建议提前准备好尽可能完整的初始树状结构用于支持即时反馈给用户的视觉提示。实际应用中可通过 API 请求预先抓取一部分常用分类作为基础框架,之后再按需逐步展开剩余细节[^4]。 #### 示例代码片段 下面给出一段简单的 Vue 实现来说明上述要点的应用方式: ```vue <script setup lang="ts"> import { ref } from 'vue'; let options = ref([]); // 存储静态或动态获取到的菜单列表 </script> <template> <div class="block"> <!-- 配置 props 参数 --> <el-cascader placeholder="请选择地址" :options="options" filterable clearable :props="{ expandTrigger: 'hover', lazy: true, lazyLoad, checkStrictly: true, emitPath: false }" ></el-cascader> </div> </template> ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值