Cascader 级联选择器 出现空面板的问题

本文介绍了一种解决前端界面中出现空白面板的方法。当后台返回的数据中children属性为一个空数组时,会导致界面显示异常。通过递归处理数据,在children为空时将其赋值为undefined,可以有效解决此问题。

出现空白面板是因为后台大佬数据是递归处理过,最底层的children是个空数组,后台大佬又去不掉或者做不了处理,说特麻烦,那前端做下就好了。

获取数据的时候 前端将数据做个递归处理,遇到children为空的时候赋值undefined,就可以解决这个问题。

处理后界面

要实现 Cascader 级联选择器在有两个面板且多选时,第一个面板单选、第二个面板多选的功能,可以通过监听选择变化事件,对选择逻辑进行控制。以下是一个基于 Element UI 的示例代码: ```vue <template> <div> <el-cascader v-model="selectedOptions" :options="options" :props="props" @change="handleChange" ></el-cascader> </div> </template> <script> export default { data() { return { selectedOptions: [], options: [ { value: 'option1', label: 'Option 1', children: [ { value: 'child1-1', label: 'Child 1-1' }, { value: 'child1-2', label: 'Child 1-2' } ] }, { value: 'option2', label: 'Option 2', children: [ { value: 'child2-1', label: 'Child 2-1' }, { value: 'child2-2', label: 'Child 2-2' } ] } ], props: { multiple: true } }; }, methods: { handleChange(value) { let newSelected = []; const firstLevelMap = {}; for (let item of value) { const firstLevel = item[0]; if (!firstLevelMap[firstLevel]) { firstLevelMap[firstLevel] = true; newSelected.push(item); } else { // 如果第一个面板已经有选择,只保留该第一个面板下的选择 if (item.length > 1 && item[0] === newSelected[newSelected.length - 1][0]) { newSelected.push(item); } } } this.selectedOptions = newSelected; } } }; </script> ``` 在上述代码中,`handleChange` 方法会在选择发生变化时被调用。在这个方法里,通过一个对象 `firstLevelMap` 来记录第一个面板的选择情况,确保第一个面板只有一个选项被选中。如果第一个面板已经有选择,只会保留该第一个面板下的选择,从而实现第一个面板单选、第二个面板多选的效果。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值