效果如图:

大概思路:树形视图使用的是vue官方事例代码,java负责封装数据,按照vue官方事例的数据结构封装数据即可。有两个需要关注的点:

1.官方事例的数据结构是一个对象里面包含着集合,而不是一个集合对象 2.递归算法

上代码:

前端:html+js

body {

font-family: Menlo, Consolas, monospace;

color: #444;

}

.item {

cursor: pointer;

}

.bold {

font-weight: bold;

}

ul {

padding-left: 1em;

line-height: 1.5em;

list-style-type: dot;

}

{{ item.name }}

[{{ isOpen ? '-' : '+' }}]

class="item"

v-for="(child, index) in item.children"

:key="index"

:item="child"

@make-folder="$emit('make-folder', $event)"

@add-item="$emit('add-item', $event)"

>

+

Vue.component('tree-item', {

template: '#item-template',

props: {

item: Object

},

data: function () {

return {

isOpen: false

}

},

computed: {

isFolder: function () {

return this.item.children &&

this.item.children.length

}

},

methods: {

toggle: function () {

if (this.isFolder) {

this.isOpen = !this.isOpen

};

},

makeFolder: function () {

if (!this.isFolder) {

this.$emit('make-folder', this.item)

this.isOpen = true

}

}

}

})

var demo = new Vue({

el: '#demo',

data: {

treeData: {}

},

methods: {

makeFolder: function (item) {

Vue.set(item, 'children', [])

this.addItem(item)

},

addItem: function (item) {

item.children.push({

name: 'new stuff'

})

},

searchData:function(){

debugger;

axios.get('menuRoleLimitBLH_searchMenus.do?pageType=1')

.then(response => (

this.treeData = response.data.json.menuMaps

))

.catch(error => console.log(error));

}

},

created() {

this.searchData();

},

})

后台:java +mysql,一共三个方法,分别是:1.获取请求 2获取所有菜单 3递归菜单的父子关系

/**

* Purpose:菜单列表页面

* @author JaxWan

* @param req

* @return IZrarResponse

*/

public IZrarResponse searchMenus(IZrarRequest req){

IZrarResponse res = new ZrarResponse();

String pageType = req.getParameter("pageType");

if(StringUtil.isNotNull(pageType)){

List EwTreeVOs = dao.selectList("selectAllMenuTree");

List> menus = this.getMenusList(EwTreeVOs);

Map map = new HashMap();

map.put("id", 1);

map.put("name", 2);

map.put("children", menus);

res.addJson("menuMaps", map);

}else {

res.addPage("pages/ewsys/dept/menu_role_limit.jsp").addJSTL("isExtForm", false).addJSTL("isEmptyForm", false);

}

return res;

}

/**

* Purpose:获取菜单集合

* @author JaxWan

* @param EwTreeVOs

* @return List>

*/

public List> getMenusList(List EwTreeVOs){

List> menus = new ArrayList>();

for (int i = 0; i < EwTreeVOs.size(); i++) {

EwTreeVO ewTreeVO = EwTreeVOs.get(i);

String id = ewTreeVO.getId();

String name = ewTreeVO.getName();

String pId = ewTreeVO.getpId();

Map map = new HashMap();

map.put("id", id);

map.put("name", name);

map.put("pId", pId);

Map map2 = this.digui(id, EwTreeVOs,map);

menus.add(map2);

}

return menus;

}

/**

* Purpose:递归父子关系

* @author JaxWan

* @param id 父节点id

* @param EwTreeVOs2 菜单集合

* @param mapResult 结果集

* @param lists 孩子集合

* @return Map

*/

public Map digui(String id,List EwTreeVOs2,Map mapResult){

List> lists = new ArrayList>();

for (int j = 0; j < EwTreeVOs2.size(); j++) {

EwTreeVO ewTreeVO2 = EwTreeVOs2.get(j);

String id2 = ewTreeVO2.getId();

String name2 = ewTreeVO2.getName();

String pId2 = ewTreeVO2.getpId();

if(id.equals(pId2)){

Map map2 = new HashMap();

map2.put("id", id2);

map2.put("name", name2);

map2.put("pId", pId2);

lists.add(map2);

EwTreeVOs2.remove(j);

j--;

}

}

mapResult.put("children", lists);

for (int i = 0; i < lists.size(); i++) {

Map tempMap = lists.get(i);

String id1 = (String) tempMap.get("id");

this.digui(id1,EwTreeVOs2,tempMap);

}

return mapResult;

}

总结

以上所述是小编给大家介绍的vue+ java 实现多级菜单递归效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

mysql vue 菜谱_vue+ java 实现多级菜单递归效果相关推荐

  1. java递归实现多级菜单栏_vue+ java 实现多级菜单递归效果

    效果如图: 大概思路:树形视图使用的是vue官方事例代码,java负责封装数据,按照vue官方事例的数据结构封装数据即可.有两个需要关注的点: 1.官方事例的数据结构是一个对象里面包含着集合,而不是一 ...

  2. Java 实现 多级菜单

    一:前言 最近老师布置了给多级菜单的作业,感觉蛮有意思的,可以提升自己的逻辑!下面我写个简易版的多级菜单,本人还是菜鸟,欢迎各位给予宝贵的建议! 二:正文 由于是给各位演示,所有我把涉及的其他条件全省 ...

  3. java 递归查询多级菜单

    类目表是多级目录表,数据如下: 想获取所有数据的多级目录,代码如下: /*** 获取树形接口的 类目** @return*/@Overridepublic List<ExamCategory&g ...

  4. Java Excel 多级菜单联动原理与实现(可扩展)

    Java Excel级联菜单实现(可扩展) 为什么要写这篇文章呢,因为看到了有人在提问如何用Java做Excel的级联菜单效果.帖子详情:http://spring4all.com/forum-pos ...

  5. java实现多级菜单(java递归)方法二

    @Autowiredprivate TreeBuilder treeBuilder; /*** 获取树状结构数据*/@RequestMapping("menu/queryMenuTree&q ...

  6. java实现多级菜单(java递归)方法一

    查询菜单树 public List<Map<String, Object>> queryCategoryInfo() {List<Map<String, Objec ...

  7. vue中使用better-scroll实现左右菜单联动效果

    效果图     左图是完全图,右图制作时颜色没弄上(制作软件的问题) 下载 better-scroll npm install better-scroll --save 注意: 必须包含两个大的div ...

  8. Vue 里,多级菜单要如何设计才显得专业?

    老生常谈了! 虽然我们是 Java 猿,但是写起来前端代码也不含糊!今天我想来和大家聊聊这个前端的动态菜单,要如何设计才显得专业!还是以我们的 TienChin 项目为例,大家一起来看看. 先来一张截 ...

  9. java中菜单分几级_JAVA构造多级菜单

    很多时候我们在前段展现时要用到多级菜单,刚好今天做了个简单的,整理一下: 首先我们要确定要展现的菜单结构: --根菜单 --一级菜单A --二级菜单A --三级菜单A --一级菜单B 与Hiberna ...

最新文章

  1. 唐骏管理学之感动员工
  2. 一直记不住window下面的盘符切换
  3. react动画库_React 2020动画库
  4. java 级联删除文件夹下的所有文件
  5. java语言中的类可以_java 语言中的类
  6. SpringBoot 启动报错:Failed to configure a DataSource: ‘url‘ attribute is not specified and no emb
  7. php守护进程内存溢出,$serv-close($fd); 服务端主动断开客户端有问题!
  8. 一种SPA(单页面应用)架构
  9. string查找字符(串)
  10. VisualSVN Server SVN仓库迁移备份
  11. 顺丰科技机器学习面试
  12. w7 声音图标不见了
  13. 【NOIP2012】国王游戏
  14. Java并发HashMap报错ConcurrentModificationException解决方案
  15. Docker 安装常用软件(超全、超实用)
  16. 高中信息技术python及答案_高中信息技术《Python语言》模块试卷 -
  17. Gatling学习笔记(四)---脚本编写及功能介绍
  18. 计算机毕业设计ssm人工智能辅修专业教学管理系统9xg0x系统+程序+源码+lw+远程部署
  19. linux中的显卡驱动问题,linux下显卡驱动安装的问题
  20. ASP.NET MVC:多语言的三种技术处理策略

热门文章

  1. 简单入门循环神经网络RNN:时间序列数据的首选神经网络
  2. sap 教学视频网址
  3. SQL server根据值搜表名和字段
  4. 使用组策略实现文件复制
  5. 【原创】MySQL 5.5 PROXY USER 伪装用户
  6. 拖放操作和文件复制小功能
  7. 请教如何改善C#中socket通信机客户端程序的健壮性
  8. IDEA中git的使用和分支的创建
  9. UIDatePicker | 时间选择器
  10. C/C++结构体字节对齐详解