el-cascader级联展开时,无法定位到子节点,去除末节点的children

7 篇文章 0 订阅

背景

基于vue的开发中有个级联选项,级联选项需要的是标准的树形json菜单,不能有空子节点,否则一直处于展开状态吗,不能到达子节点.
后台我用的java,输出的json对象如下:
在这里插入图片描述
子节点中一直存在 “children”:[],而el-cascader 需要的格式如下:
在这里插入图片描述
不允许有空的children节点出现,因此我需要对后台返回的json进行处理,当然也可以在后台单独处理,去掉children的空节点.

解决思路

  1. 将后台返回的json对象转成成json字符串,如下代码
var jsonStr=JSON.stringify(response.data);
  1. 替换字符串中末节点中的children[]的字符串,操作如下
let jsondata=jsonStr.replace(/\"children"\:\[]/g,"no:0");

处理替换后的数据如下
在这里插入图片描述

注意:由于",[],:都属于特殊符号,因此我们需要通过\进行转义,否则是找不到这些替换的符号的.

  1. 将替换后的json字符串转化成json对象,重新赋值给级联标签即可.
JSON.parse(JSON.stringify(response.data)
  1. 完整的代码
initDistrict() { //初始化区域数据
      getDistrictTree().then(response => {
        var jsondata = JSON.parse(JSON.stringify(response.data).replace(/\"children"\:\[]/g, "\"no\":0"));
        console.log(jsondata, 'jsondata');
        this.districtOptions = jsondata;

      })
    }
  1. 实现效果如下
    在这里插入图片描述

前端替换字符串的效率还是很高,所以不用过于担心会影响效率,当然数据量很大的话最好在后台处理.

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值