树形数据处理展示问题/复选框勾选没有选中效果

需求:展示树形组织机构

问题:接口获取的数据是一个嵌套结构,返回字段与ant-design的a-tree-select所需字段不一致

解决办法1:递归(大佬可以补充一下递归代码)

解决办法2:接口返回的数据转换为字符串然后正则匹配所需要修改的字段(ant-design需要的字段是title和value字段,value字段一定要匹配,不然勾选后没有选中效果!!!!!!!!)

我用的是第二种:代码如下

接口返回数据格式如下:

console.log("getTreeDatares======", res);
      let str = JSON.stringify(res.data)
      //   let str = res.data.toString() 失败
      let newStr = str.replace(/name/g, 'title') // 注意replace方法并不会改变源字符串 需要新的变量接收
      let newStrs = newStr.replace(/id/g, 'value') //value一定也要字段匹配 不然选择后没有选中状态
      console.log("newStrs======", newStrs);
      // 再将字符串转回数组
      treeData.value = JSON.parse(newStrs)
      console.log("treeData==",treeData.value)

显示ok

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现树形复选框,可以使用以下步骤: 1. 创建一个树形结构的视图,用于显示所有可选的图层。 2. 为每个图层创建一个复选框,并将其与图层相关联。 3. 当用户勾选或取消勾选复选框时,通过事件处理程序更新图层状态,并在地图上显示或隐藏相应的图层。 以下是一个示例代码,展示如何创建树形复选框: ```html <div id="layerTree"></div> <script> // 图层列表 const layers = [ { id: 1, name: '图层1', visible: true }, { id: 2, name: '图层2', visible: false }, { id: 3, name: '图层3', visible: true }, { id: 4, name: '图层4', visible: true }, ]; // 创建树形复选框 function createLayerTree() { const tree = document.getElementById('layerTree'); layers.forEach((layer) => { const node = document.createElement('div'); const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = layer.visible; checkbox.addEventListener('change', () => { layer.visible = checkbox.checked; updateLayerVisibility(); }); node.appendChild(checkbox); const label = document.createElement('label'); label.innerText = layer.name; node.appendChild(label); tree.appendChild(node); }); } // 更新图层可见性 function updateLayerVisibility() { layers.forEach((layer) => { // 根据图层的 visible 属性来显示或隐藏相应的图层 if (layer.visible) { // 显示图层 } else { // 隐藏图层 } }); } createLayerTree(); updateLayerVisibility(); </script> ``` 在这个示例中,我们首先创建了一个包含图层信息的数组,然后创建了一个名为 `createLayerTree` 的函数,用于创建树形复选框。在创建每个节点时,我们附加了一个复选框和一个标签,并将复选框与图层的可见性相关联。当复选框的状态改变时,我们更新了相应的图层可见性,并调用 `updateLayerVisibility` 函数来显示或隐藏相应的图层。 这个示例代码仅提供了一个基本的实现思路,你可以根据自己的需求进行修改和定制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值