Vue基础知识总结 5:vue实现树形结构

【Vue基础知识总结 5】Vue实现树形结构,4面阿里拿到P7Offer 如果你打算靠自己摸索自学,那么你首先要了解学习前端的基本大纲,这是你将要学习的主要内容,理解以及掌握好这些内容,便可以找到一份初级的前端开发工作。你还需要有一套完整的前端学习教程,作为初学者最好的方式就是看视频教程学习,初学者容易理解接受。不要选择买书学习,这样的方式没有几个人能学会,基本都是看不下去书,也看不懂书。如果喜欢看书的学弟,可以买一些经典的书籍作为辅助即可,主要还是以看教程为主。每天抽出固定几个小时学习,做好长期学习的准备。 阅读详情

目录

一、前言

二、代码实例

1、数据库设计

2、实体类

3、controller

4、service

5、前端


一、前言

开发过程中,涉及到多级菜单的应用,树形结构比较常见,今天就做了一个Spring Boot + Vue + Element-UI 实现树形结构的一个小demo。

Tree组件最适合的结构是无序列列表ul,创建一个递归组件Item表示Tree选项,如果当前Item存在 children,则递归渲染子树,以此类推;同时添加一个标识管理理当前层级item的展开状态。

效果展示:

二、代码实例

1、数据库设计

2、实体类

一般树形结构都是创建若干层实体类,然后通过list结合在一起,面向对象编程

一级实体类

@Data
public class OneSubject {
    private String id;
    private String title;
    private List<TwoSubject> children = new ArrayList<>();
}

二级实体类

@Data
public class TwoSubject {
    private String id;
    private String title;
}

3、controller

@GetMapping("getAllSubject")
public R getAllSubject(){
    List<OneSubject> list = subjectService.getAllOneTwoSubject();
    return R.Ok().data("list",list);
}

4、service

//课程分类列表(树形)
@Override
public List<OneSubject> getAllOneTwoSubject() {
    //1 查询所有一级分类
    QueryWrapper<EduSubject> wrapperOne = new QueryWrapper<>();
    wrapperOne.eq("parent_id","0");
    List<EduSubject> oneSubjectList = baseMapper.selectList(wrapperOne);
    //2 查询所有2级分类
    QueryWrapper<EduSubject> wrapperTwo = new QueryWrapper<>();
    wrapperTwo.ne("parent_id","0");
    List<EduSubject> twoSubjectList = baseMapper.selectList(wrapperTwo);

    //创建list集合,用于存储最终封装数据
    List<OneSubject> finalSubjectList = new ArrayList<>();
    //3、封装一级分类
    for (int i = 0; i < oneSubjectList.size(); i++) {
        EduSubject eduSubject = oneSubjectList.get(i);
        OneSubject oneSubject = new OneSubject();
        BeanUtils.copyProperties(eduSubject,oneSubject);

        //在一级分类循环遍历查询所有的二级分类
        //创建list集合封装每一个一级分类的二级分类
        List<TwoSubject> twoFinalSubjectList = new ArrayList<>();
        for (int j = 0; j < twoSubjectList.size(); j++) {
            EduSubject tSubject = twoSubjectList.get(j);
            if(tSubject.getParentId().equals(oneSubject.getId())){
                TwoSubject twoSubject = new TwoSubject();
                BeanUtils.copyProperties(tSubject,twoSubject);
                twoFinalSubjectList.add(twoSubject);
            }
        }
        //把一级下面所有的二级分类放入一级分类中
        oneSubject.setChildren(twoFinalSubjectList);
        finalSubjectList.add(oneSubject);
    }
    //4、封装二级分类
    return finalSubjectList;
}

5、前端

JavaScript

import request from '@/utils/request'
export default {
    //1 课程分类列表
    getSubjectList() {
        return request({
            url: '/eduservice/subject/getAllSubject',
            method: 'get'
          })
    }
}

Vue页面 

<template>
  <div class="app-container">
    <el-input v-model="filterText" placeholder="Filter keyword" style="margin-bottom:30px;" />
    <el-tree
      ref="tree2"
      :data="data2"
      :props="defaultProps"
      :filter-node-method="filterNode"
      class="filter-tree"
      default-expand-all
    />
  </div>
</template>

<script>
import subject from '@/api/edu/subject'
export default {
  data() {
    return {
      filterText: '',
      data2: [],  //返回所有分类数据
      defaultProps: {
        children: 'children',
        label: 'title'
      }
    }
  },
  created() {
      this.getAllSubjectList()
  },
  watch: {
    filterText(val) {
      this.$refs.tree2.filter(val)
    }
  },

  methods: {
    getAllSubjectList() {
        subject.getSubjectList()
            .then(response => {
                this.data2 = response.data.list
            })
    },
    filterNode(value, data) {
      if (!value) return true
      return data.title.toLowerCase().indexOf(value.toLowerCase()) !== -1
    }
  }
}
</script>

上一篇:Vue知识体系总结 4:Vue组件化开发

下一篇:Vue基础知识总结 6:vue双向绑定原理

记录基于Vue.js的移动端Tree树形组件 Vue 树形选择器( Vue tree select )组件在搭建 Vue 的 app 中特别常用,Vue tree select 除了简单的树形结构外,还有非常多样的功能来配合不同场景的使用。比如搜索过滤,前端添加删除树枝,前端编辑修改子树名,拖拽排序,对用户操作事件记录等。本文记录了我自己使用多年最好用的 2款 Vue tree select 组件,每一款都经过我实际测试,推荐给大家。 阅读详情

相关推荐

【Vue入门实践】Element-UI 树形组件el-tree的组件封装 =>实现组织机构树Tree => 使用vue-content-menu定制可编辑树结构editableTree

本文主要讲解了基础Element-ui中el-tree组件的使用,包括对组织机构树的组件封装,使用组织机构树进行查询,以及使用vue-content-menu修改editableTree

Sabrina_cc的博客 2万+

Vue 小结 --- 树形结构

组织架构----树形结构布局 一个企业的组织架构是这个企业的灵魂, 组织架构常采用树形金字塔式结构来构建 采用element中的 tree组件 可以实现树形结构,用清晰的层级结构展示信息 <el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree> <script> export default { data() { ret...

m0_66430291的博客 5511

2024年最新【Vue基础知识总结 5】Vue实现树形结构(1),Web前端驱动工程师面试题

打开全栈工匠技能包-1小时轻松掌握SSR两小时精通jq+bs插件开发生产环境下如歌部署Node.js网易内部VUE自定义插件库NPM集成谁说前端不用懂安全,XSS跨站脚本的危害webpack的loader到底是什么样的?两小时带你写一个自己loader二级实体类@Data。

2401_84619145的博客 603

超大量数据,前端树形结构展示

由于在点击节点时才进行该层数据的获取,默认情况下 Tree 无法预知某个节点是否为叶子节点,所以会为每个节点添加一个下拉按钮,如果节点没有下层数据,则点击后下拉按钮会消失。同时,你也可以提前告知 Tree 某个节点是否为叶子节点,从而避免在叶子节点前渲染下拉按钮。}, 500);

weixin_40992252的博客 1万+

VUE 实现树形结构

vue 树形结构 添加删除节点 返回ID 可同步到服务器 treelist组件

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 512

【Vue基础知识总结 5】Vue实现树形结构

二级实体类@Data。

2401_84092694的博客 416

PT静态时序分析实战:从基础命令到高级报告解析

本文详细介绍了PT(PrimeTime)静态时序分析(STA)的实战技巧,从基础命令如pt_shell和report_timing的使用,到高级报告解析与问题排查。通过丰富的实例和脚本示例,帮助工程师快速掌握时序分析的核心技能,提升芯片设计验证效率。

weixin_29289821的博客 953

【Vue基础知识总结 5】Vue实现树形结构(2)

效果展示:二、代码实例。

2401_84092666的博客 697

Neo4j 智能供应链应用源代码简析

本文简析Neo4j智能供应链应用的源代码,让你也可以快速开发自己的供应链应用。

Neo4j 开发者博客 1676

RK3568平台(camera篇)点亮imx586摄像头

mipi摄像头硬件确认点:1.供电:5V,2.8V,1.2V,1.8V,reset脚(硬拉3.3,上电的时候从低到高),pwron脚外接3.3V。2,时钟:MCLKOUT是24兆时钟。3.4组差分mipi线。mipi的data线的波形为方波。

weixin_49303682的博客 7255

【Vue基础知识总结 5】Vue实现树形结构(1)

一般树形结构都是创建若干层实体类,然后通过list结合在一起,面向对象编程。//创建list集合封装每一个一级分类的二级分类。//创建list集合,用于存储最终封装数据。//把一级下面所有的二级分类放入一级分类中。//在一级分类循环遍历查询所有的二级分类。//课程分类列表(树形)//1 查询所有一级分类。//2 查询所有2级分类。//3、封装一级分类。//4、封装二级分类。//1 课程分类列表。

2401_84091321的博客 467

2025华为杯第二十二届中国研究生数学建模竞赛D题:低空湍流监测及最优航路规划 - 完整解题分析+完整MATLAB源码!(上篇)

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 2583

【Vue基础知识总结 5】Vue实现树形结构(1),2024年最新面试培训班一般几天

开发过程中,涉及到多级菜单的应用,树形结构比较常见,今天就做了一个Spring Boot + Vue + Element-UI 实现树形结构的一个小demo。Tree组件最适合的结构是无序列列表ul,创建一个递归组件Item表示Tree选项,如果当前Item存在 children,则递归渲染子树,以此类推;同时添加一个标识管理理当前层级item的展开状态。效果展示:二、代码实例。

2401_84140816的博客 991

智能园艺:AI Agent控制的室内种植系统

随着城市化进程的加速和人们对健康生活的追求,室内种植逐渐成为一种流行的生活方式。然而,传统的室内种植方式往往需要人工进行大量的监测和管理,效率低下且难以保证植物的生长质量。智能园艺:AI Agent控制的室内种植系统旨在利用先进的人工智能技术和传感器设备,实现室内种植的自动化和智能化管理,提高种植效率和植物生长质量。本系统的范围涵盖了从植物生长环境的监测到种植过程的自动化控制,包括温度、湿度、光照、土壤水分等环境参数的实时监测,以及灌溉、施肥、通风等种植操作的自动执行。

AI天才研究院 782

YOLOv11 改进 - 特征融合 | 替换 C3k2 涨点:GELAN 融合 CSP+ELAN 提精度

本文介绍了可编程梯度信息(PGI)和广义高效层聚合网络(GELAN)与 YOLOv11 的结合,以解决深度网络数据传输时的信息丢失问题。PGI 能为目标任务提供完整输入信息,计算目标函数以更新网络权重。GELAN 作为轻量级网络架构,由 SPPELAN、ELAN1、RepNCSPELAN4 等模块组成。我们将 GELAN 代码集成进 YOLOv11, 实验脚本显示,结合 GELAN 的 YOLOv11 在 MS COCO 数据集目标检测任务中或有良好表现。

魔改工程师的博客 1240

vue实现树形结构

二、代码实例。

2401_84619185的博客 950

【ACP】2025-最新-疑难题解析- 练习一汇总

他们对您的方案比较满意,作为一个特别看重用户体验的创业公司,他们有一个比较担心的问题:在后端云服务器 ECS 实例相对空闲时,可能会触发减少 ECS 实例的伸缩活动,这时候运行在即将移出伸缩组的 ECS 实例上的应用会被终止,那么发起这些应用的用户的体验会变差。:在使用阿里云的负载均衡 SLB 实例时,做了如下健康检查的配置:响应超时时间为 5 秒,健康检查间隔为 2 秒,不健康阈值为 3,健康阈值为 3,即对于确认一个后端服务器 ECS 实例是健康的,需要连续三次得到正常响应。以下说法哪一项是正确的?

jundao1997的专栏 324

VueJS Tree组件终极指南:如何快速构建高性能树形结构 [特殊字符]

VueJS Tree是一个高度可定制且性能卓越的Vue.js树形组件,专为现代Web应用设计。无论您需要构建文件管理器、目录导航还是复杂的数据展示界面,这个Vue树形组件都能提供闪电般的渲染速度和丰富的自定义选项。 ## 🚀 快速上手:5分钟安装配置 ### 一键安装步骤 使用npm或yarn快速安装VueJS Tree组件: ```bash npm install vuejs-tree

gitblog_01043的博客 365

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vue实现树形结构增删改查

其实很多公司都会有类似于用户权限树的增删改查功能,正好最近我刚写了一个树形结构的增删改,在这里和大家分享一下,如果有不合理的地方欢迎评论,我会尽快优化~~ 先附上一下效果图 这个是没有点击编辑时,产品的需求是选中某个节点,取得该节点对应的设备数据,所以初始页面是下面这个样子的。 这个是点击了编辑之后,显示节点的编辑按钮 点击最上面的添加按钮,显示最外层父节点的添加画面 修改节点名称 因为...

ying940718的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

基于vue的树形结构

基于vue的树形结构封装 主要功能:添加同级、添加子级、拖拽、双击名称进行修改 依赖:vue、element-ui、sass git地址:https://github.com/rongyanping/vue-tree 封装 MyTree.vue <template> <div class="my_tree"> <div class="broth...

qq_42842709的博客 2189

vue获取到树形结构后递归遍历数据,生成树形结构数据,无限级

1.需求 做的是个三级联动的数据 options: [{ value: 1, label: '东南', children: [{ value: 2, label: '上海', children: [ { value: 3, label: '普陀' }, { value: 4, label: '黄埔' }, ...

weixin_41166682的博客 1万+

Vue.Draggable高级应用:树形结构拖拽实现

你是否在开发中遇到过需要实现层级菜单拖拽排序的需求?是否尝试过让用户通过拖拽快速调整组织架构图?本文将通过Vue.Draggable实现树形结构拖拽的完整方案,解决嵌套列表排序、父子节点联动、跨层级移动等核心痛点。读完本文你将掌握:递归组件设计、拖拽作用域控制、动态数据同步三大关键技能。 ## 核心原理与准备工作 树形结构拖拽的本质是**递归组件+拖拽作用域隔离**。Vue.Draggable...

gitblog_00490的博客 1220
上一篇: 【Spring Cloud 3】限流、降级和熔断Hystrix
下一篇: mybatis是如何防止sql注入的
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2933原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值