【ant design vue】a-tree树形组件获取数据及回显

基于ant-design-vue中a-tree的搜索功能 项目开发是用的vue+ant-design-vue 最近收到一个新的搜索需求,需要对目录树进行搜索,并将搜索到的值进行高亮与展开显示。 废话不多说直接上代码,以下代码只是一个简单的demo。 <template> <div> <a-input-search v-model="searchStr" placeholder="输入搜选项" style="wid... 阅读详情
AI摘要

本文详细介绍了如何处理和优化Ant Design Vue的a-tree组件,包括将扁平数据转化为树结构数据,设置组件属性,使组件初始状态为展开,以及如何回显选中节点。此外,还提供了从后台数据中筛选并回显最深层子节点ID的方法,以及在数据加载时使用Spin组件进行加载效果的优化。

1.获取数据

首先,数据自然是tree结构的,这中间自然会有一些对数据的处理,说一下常用处理:

 

 1.将数据的属性处理为组件要求的属性

 使用组件提供的该属性:replaceFields="{ key:'id',title:'name',children:'children'}"

<a-tree
    :replaceFields="{ key:'id',title:'zhName',children:'children'}"
    v-model="checkedKeys"
/>

 

2.渲染完a-tree组件的时候,组件为收缩状态,希望为展示状态

渲染组件数据时,组件为收缩状态,如下:

那我们想要渲染完组件是展开的,如下:

解决方法,在组件上使用v-if对渲染的数据(treeData做判断,有数据的时候则渲染):

<a-tree
    v-if="treeData && treeData.length > 0"
    v-model="checkedKeys"
/>

 

 

 

2.将选中的数据回显到a-tree组件上

a-tree的组件很奇怪,获取时,取到所有tree节点的id,回显时却只需要tree节点最深层的子id,很多人应该这个问题都选择了手写tree组件,我找了很久,终于找到了回显的方法

参考该博客(https://blog.youkuaiyun.com/sunnyjingqi/article/details/110202457  ,该作者写的是react版本,但逻辑其实一样)进行如下改造: 

明确一点:我们从后端取到的节点数据为tree结构选中的所有节点的id,但实际上,我们只需要获取最深层的子id来进行展示

1.从完整的treeData遍历出最深层的节点(所有子节点及没有子节点的节点)

//methods中的方法
deepList(data){
     data.map((item) => {
     if (item.children && item.children.length > 0) {
           this.deepList(item.children);
        } else {
            //test数组存放  
            this.test.push(item.id);
        }
      });
}


//调用
this.deepList(this.treeData);

2.将后台返回的数据(含父节点的)与该deepList方法遍历出来的结果test数组做一个交集,即取到选中的子节点

//tmpList 后台拿到的结果,为字符串数组,存放的是节点id
const result = [...new Set(this.test)].filter((item) => new Set(eval(this.tmpList)).has(item));

//将结果赋值给v-model绑定的属性
this.checkedKeys = [...result];

3.善后(对a-tree的一些优化处理)

  • 有些从后台拿到的数据不是字符串数组,需进行处理,其次,处理后的结构(比如a数组)可能还需要赋值给别的变量(比如a数组赋值给b数组)可将b数组用于一些判断(比如判断a-tree组件节点是否有被选中等等)
  • 从后台获取选中的节点数据时,对spinning值(ant design vue的Spin组件)进行变化,这样在选中的节点数据渲染上时会有一个蒙层加载的效果,如下:
<a-spin :spinning="spinning">
   <div class="spin-content">
        <a-tree
         v-if="treeData && treeData.length > 0" 
         :tree-data="treeData"
         class="tree"
         :replaceFields="{ key:'id',title:'name',children:'children'}"
         v-model="checkedKeys"
        />
    </div>
</a-spin>

 

Ant Design Vue详解a-tree-select使用树形选择器,递归渲染数据,点击选项回显,一二级菜单是否可选等问题 【代码】Ant Design Vue详解a-tree-select使用树形选择器,递归渲染数据,点击选项回显,一二级菜单是否可选等问题。 阅读详情

相关推荐

【ant design vue】tree树形控件获取数据及数据回显与上传

【ant design vue】tree树形控件获取数据及数据回显与上传功能的分析与实现并附上代码

weixin_53350466的博客 7224

vue antdesig a-tree组件使用详解

1.首先页面使用 如果使用a-tree组件时报如图错误,就是没有全局引入注册问题: 问题1解决:在main.js里引入并挂载 import {Tree} from 'ant-design-vue' Vue.use(Tree) 2.数据渲染 一般后端返回的数据和组件文档字段对应不上,所以需要自定义一下字段 <a-tree :tree-data='goodsClassData' :replaceFields='replaceFields'> </a-tre

ke_sin的博客 1万+

React中使用Ant Design 以Menu导航菜单形式展示Tree树形结构

目的 项目分为全局路由如登录页面,404页面之类的和由侧边栏menu控制跳转的子路由页面主要是业务页面。页面子页面放入views文件夹下,将自动读入注册成route,配置文件主要用于生成树形menu侧边栏。建议配合项目结构进行阅读效果更佳 效果 项目结构 子页面配置文件 将根据以下配置文件生成树形menu导航栏 export default [ { name: '测试页面', path: '/test', meta: { a

weixin_39168678的博客 2771

antd——使用a-tree组件实现 检索+自动展开+自定义增删改查功能——技能提升

antd——使用a-tree组件实现 检索+自动展开+自定义增删改查功能——技能提升

yehaocheng520的博客 8170

Ant Design Vue中a-tree-select树形选择器实战:递归数据处理与动态菜单控制

本文详细解析了在Ant Design Vue项目中,如何利用a-tree-select组件高效处理后台返回的递归树形数据,并实现动态菜单控制。核心内容包括通过递归函数加工数据、根据业务逻辑动态设置节点可选性(selectable属性),以及解决数据回显等关键问题,为开发者提供了一套完整的实战解决方案。

yhn45678901的博客 462

ant-design-vue a-tree 默认展开所有节点避坑指南(附条件判断写法)

本文深入剖析了 ant-design-vue 的 a-tree 组件设置 default-expand-all 属性后默认展开所有节点失效的常见问题。核心原因在于组件渲染时机与异步数据加载的冲突。文章提供了两种核心解决方案:使用 v-if 控制渲染时机确保数据就绪,或采用受控的 expandedKeys 模式实现更灵活的展开控制,并附带了条件判断与动态展开的进阶写法,帮助开发者彻底规避此坑。

sony5的博客 887

ant-design-vue中tree增删改

ant-design-vue中tree增删改 1. 使用背景 新项目中使用了ant-design-vue组件库.该组件库完全根基数据双向绑定的模式实现.只有表单组件提供少量的方法.所以,在使用ant-design-vue时,一定要从改变数据的角度去切换UI显示效果.然而,在树形控件a-tree的使用上,单从数据驱动上去考虑,感体验效果实在不好. 2. 当前痛点 通过阅读官方帮助文档,针对树形控件数据绑定.需要将数据构造成一个包含children,title,key属性的大对象.这样一个对象,要么通.

u012732909的博客 3412

vue3+ant design vue 实现Tree树形控件带搜索库并可关键字搜索筛选功能,Antd组件库a-tree可搜索的树展示搜索结果并展开(根据关键字搜索过滤tree树列表数据,详细示例代码)

Vue3 AntDesign可搜索的树(只展示搜索结果并展开)vue3+antd使用andt-tree实现可搜索的tree_antd选择树搜索,vue3项目Antd 实现Tree树形控件带搜索功能,支持搜索展开tree,antd-tree组件带搜索框,Ant Design Vue3组件Tree树形控件,Tree组件实现可搜索的树,ant.design组件库中的Tree组件实现可搜索的树,树控件的搜索功能,antd Tree 组件 带搜索,动态list数据,tree嵌套数据,搜索后关键字标红,具备搜索功能的树

✅ 精选推荐文章 5267

ant desigin vue之 tree(树形控件)中设置defaultExpandAll无效的问题

问题:在做后台管理系统的菜单管理列表时,用到ant-design-vue中的 a-tree 树形控件展示菜单列表,以及进行操作列表。需要在加载出列表时,同时展开所有的树节点。查看文档,https://www.antdv.com/components/tree-cn/ 使用defaultExpandAll属性,但是一直不生效,template中的代码如下: <a-tree default-expand-all :tree-data="adminMenuList" :show-line.

longgege001的博客 8071

Xilinx FPGA 10G Ethernet Subsystem example

The 10G Ethernet subsystem provides 10 Gb/s Ethernet MAC, Physical Coding Sublayer(PCS) and Physical Medium Attachment (PMA) transmit and receive functionality over anAXI4-Stream interface.

青城扬沙的博客 2382

哈希拓展攻击CTF题做法

kali下载相关工具hash-ext-attack:hash拓展题目特征:2023楚慧杯upload_shell实验吧之让我进去:前言:具体怎么加密解密补位的原理我不懂,深入理解的部分我在文末挂了链接,以下也只是我做题的结论和通解,可能不准确(但是做题还挺准确),有错误欢迎指出:是在密码加密过程中引入的一个随机值,它与密码结合使用,目的是增加密码的复杂性和安全性。在密码加密中,常见的做法是将用户提供的密码进行哈希处理,然后存储哈希值而不是明文密码

2301_76690905的博客 2422

Ant-design-vue 树形控件tree 新增节点,删除节点,编辑节点的解决方案

Ant-design-vue 树形控件tree 新增节点,删除结点,编辑结点的解决方案 最近项目需求如下,想做一个菜单管理,用tree的形式,用过element-ui的都知道怎么处理,但是由于ant-design-vue并未提供操作节点方法,遂自己的解决方案如下 <template> <div class="page-header-index-wide"> &l...

仇益阳的博客 4万+

Python爬虫实战:用Selenium+ChromeDriver批量抓取政府网站政策文件(附完整代码)

本文详细介绍了使用Python的Selenium和ChromeDriver进行政府网站政策文件批量抓取的实战技巧。从环境配置、动态页面元素定位到分页机制破解和反爬虫策略,提供了完整的解决方案和代码示例,帮助开发者高效获取结构化政策数据。

weixin_42531710的博客 266

【antd】Ant design Vue树形控件Tree——增删改查操作

Ant design 组件库中的树形控件,展示了相关的数据展示用法,但基本的增删改查操作还需要自己实现以下,最近花了两三天将基本操作进行实现了。

zhaohb2016的博客 7545

【乐企】开票控制服务

例子:企业信息初始化。

九七的博客 456

CREO图文教程:三维设计案例之矿泉水瓶实例图文教程之详细攻略

草绘,先绘制中心线,绘制底部宽度;对称标注:点击左端点,中心线,左端点,中键即可标注;给定高度;样条曲线绘制外形(双击样条曲线,点击下栏的控制模式(第一个按钮),再拉动控制样条曲线上的各个点)打勾即可得到三维实体。......

走向CTO之路 1935

ant-design-vue穿梭框,当tree遇到Transfer

最近项目中运动用到了transfer,而且还和tree一起运用,真的是头大,不过还好,最终还是解决了。 ant-design-vue文档里都有,我只粘贴部分代码-------- <a-transfer class="tree-transfer" :data-source="dataSource" :target-keys="targetKeys"//重要的部分 :render="item => item.title" :show.

ddong345的博客 8055

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

【保姆级教程】YOLOv8_OBB旋转目标检测:训练自己的数据集

m0_51579041的博客 1万+

ant-design-vue树形结构控件的改造

最近项目PRD需求如下 有一个树形结构的菜单管理,与官网ant-design-vue中提供的a-tree不同 图标不同 每条数据hover的时候都有操作按钮 解决方案 第一个问题 这是不修改a-tree的任何样式文件时出现的icon图标,与项目项目要求不符 若要改成项目PRD要求的那样只需改动一些样式即可 /deep/ .ant-tree li span.ant-tree-switche...

一个慢的博客 1万+

DSP篇--C6678功能调试系列之SPI调试

SPI传输数据分为线上直接收发和通过EDMA的数据传输两种。第一种是直接将数据放在线上(SPIDAT1),在寄存器(SPIBUF)中写入命令实现数据的收发;第二种需要配置EDMA,将数据buffer直接作为EDMA的数据源进行传输,其需要配置的参数和中断与EDMA一致。

nanke_yh的博客 1261

YOLO11涨点优化:小目标检测 | 多头检测器提升小目标检测精度

引入多头检测器助力YOLO11,添加一个微小物体的检测头暴力提升小目标检测性能

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4742

ant-design-vue 树形组件 a-tree懒加载

ant-design-vue 树形组件 a-tree懒加载

qq_42753983的博客 1274

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Ant Design of Vue的树形控件Tree的使用

需要注意的是不同于从同一个接口获取子树数据数据在一张表中,key的值可以确保唯一性,多个接口获取key的唯一性需要保证,我这边是和后台约定了一个字段作为标识它由本身id加上前缀字母组成,这样我们拿到的时候把它做一下处理既能知道它具体的哪个层级的数据,还能根据它的id继续查找子树。实现方式是初始化渲染getTree方法,加载主树。实现方式是进入页面即调用getTree的方法,拿到主树的数据,其后每展开一层就会调用它的onLoadData方法,构造子树数据作为children放在主树对应的节点下。...

iijik55的博客 3773

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

谈谈ant-design-vue中的下拉选择框select组件的使用

ant库中的下拉选择框 用户实现 使用ant库中的下拉选择组件实现用户下拉选择功能 解决办法 使用直接手写一行行下拉框中的内容 选项一 选项二 选项三 使用与vue的v-for指令循环出下拉框中的内容 {{item.value}} </a-select> //数组选项 var options = [{ id:0, value:"选项一" },{ id:1, value:"选项二" },{ id:2, value:"选项三" },] 使用的option属

qq_43776017的博客 2万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

ant design vue中treeselect异步获取数据

结构: <a-tree-select :dropdownStyle="{ maxHeight: '400px', overflow: 'auto' }" :getPopupContainer="(triggerNode) => triggerNode.parentNode" :loadD...

Femi的博客欢迎大家 1万+

关于《Ant-design-vue 树形控件tree 新增节点,删除节点,编辑节点的解决方案》文章的补充

我看有不少人看到这个《Ant-design-vue 树形控件tree 新增节点,删除节点,编辑节点的解决方案》文章以后,有不少疑惑,关于删除,增加的问题,以及key重复的问题,我发的这篇文章只是提供了一个思路。 整合下,还是对你们详解一下,可能有些人看得不是很明白 关于dom <a-button type="primary" @click="add">添加顶级菜单</a-butt...

仇益阳的博客 6905
上一篇: 【vue pc端】 下载文件
下一篇: 【vue && vue-pdf】pdf展示及解决签章不显示的问题
谭CV
博客等级 码龄9年 73粉丝 85原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值