尚筹网:菜单维护之在页面显示树形结构的前端部分

跳转menu-page.jsp

1、创建/atcrowdfunding-admin-1-webui/src/main/webapp/WEB-INF/menu-page.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="UTF-8">
<%@ include file="/WEB-INF/include-head.jsp"%>
<body>

	<%@ include file="/WEB-INF/include-nav.jsp"%>
	<div class="container-fluid">
		<div class="row">
			<%@ include file="/WEB-INF/include-sidebar.jsp"%>
			<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
				<div class="panel panel-default">
					<div class="panel-heading">
						<i class="glyphicon glyphicon-th-list"></i> 权限菜单列表
						<div style="float: right; cursor: pointer;" data-toggle="modal"
							data-target="#myModal">
							<i class="glyphicon glyphicon-question-sign"></i>
						</div>
					</div>
					<div class="panel-body">
						<ul id="treeDemo" class="ztree"></ul>
					</div>
				</div>
			</div>
		</div>
	</div>

</body>
</html>

2、/atcrowdfunding-admin-1-webui/src/main/resources/spring-web-mvc.xml配置view-controller跳转到menp-page.jsp

<mvc:view-controller path="/menu/to/page.html" view-name="menu-page"/>

3、将/atcrowdfunding-admin-1-webui/src/main/webapp/WEB-INF/include-sidebar.jsp中的“许可维护”那一部分替换为:

<li style="height: 30px;"><a href="menu/to/page.html"><i class="glyphicon glyphicon-lock"></i> 菜单维护</a></li>

加入zTree环境

1、
在这里插入图片描述
2、/atcrowdfunding-admin-1-webui/src/main/webapp/WEB-INF/menu-page.jsp:中

<link rel="stylesheet" href="ztree/zTreeStyle.css" />
<script type="text/javascript" src="ztree/jquery.ztree.all-3.5.min.js"></script>

显示

1、创建JavaScriptSource File: /atcrowdfunding-admin-1-webui/src/main/webapp/script/my-menu.js

// 由setting.view.addDiyDom属性引用,负责显示自定义图标
// treeId是<ul id="treeDemo" class="ztree"></ul>的id属性值
// treeNode对应每一个树形节点
function showMyIcon(treeId, treeNode) {
	
	// 获取当前节点的id
	var currentNodeId = treeNode.tId;
	
	// 获取新的class值用于替换
	var newClass = treeNode.icon;
	
	// 在当前节点id之后附加“_ico”得到目标span的id
	var targetSpanId = currentNodeId + "_ico";
	
	// 将目标span的旧class移除,添加新class
	$("#"+targetSpanId)
		.removeClass()
		.addClass(newClass)
		.css("background","");
	
	console.log(treeNode);
}

function initWholeTree() {
	// setting对象中包含zTree的设置属性
	var setting = {
		"view": {
			"addDiyDom": showMyIcon,
			"addHoverDom": addHoverDom,
			"removeHoverDom": removeHoverDom
		},
		"data": {
			"key": {
				"url": "notExistsProperty" // 阻止点击节点后跳转
			}
		}
	};

	// 发送Ajax请求获取zNodes数据
	$.ajax({
		"url":"menu/get/whole/tree.json",
		"type":"post",
		"dataType":"json",
		"success":function(response){
			
			var result = response.result;
			
			if(result == "SUCCESS") {
				// 用于显示树形结构的节点数据
				var zNodes = response.data;
				
		
				// 执行树形结构的初始操作
				$.fn.zTree.init($("#treeDemo"), setting, zNodes);
			}
			
			if(result == "FAILED") {
				layer.msg("加载菜单数据失败!原因是:"+response.message);
			}
		},
		"error":function(response){
			layer.msg("加载菜单数据失败!原因是:"+response.message);
		}
	});
}

// 在鼠标移入节点范围时添加自定义控件
function addHoverDom(treeId, treeNode) {
	
	// 在执行添加前,先进行判断,如果已经添加过,就停止执行
	// 组装按钮组所在的span标签的id
	var btnGrpSpanId = treeNode.tId + "_btnGrp";
	
	var btnGrpSpanLength = $("#"+btnGrpSpanId).length;
	
	if(btnGrpSpanLength > 0) {
		return ;
	}
	
	// 由于按钮组是放在当前节点中的超链接(a标签)后面,所以先定位到a标签
	// 按id生成规则组装a标签的id
	var anchorId = treeNode.tId + "_a";
	
	// 调用已封装函数生成按钮组
	var $btnGrpSpan = generateBtnGrp(treeNode);
	
	// 在a标签后面追加按钮组
	$("#"+anchorId).after($btnGrpSpan);
	
}

// 在鼠标移出节点范围时删除自定义控件
function removeHoverDom(treeId, treeNode) {
	
	// 组装按钮组所在的span标签的id
	var btnGrpSpanId = treeNode.tId + "_btnGrp";
	
	// 删除对应的元素
	$("#"+btnGrpSpanId).remove();
}

2、/atcrowdfunding-admin-1-webui/src/main/webapp/WEB-INF/menu-page.jsp的 < body >标签上面:

<script type="text/javascript" src="script/my-menu.js"></script>
<script type="text/javascript">
	$(function(){
		initWholeTree();
	});
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Vue.js 的组件库 Element UI 中的 TreeSelect 组件来实现这个功能。首先,你需要在 Vue.js 项目中引入 Element UI 组件库,然后在组件中使用 TreeSelect 组件。 以下是一个简单的示例代码: ```html <template> <div> <el-tree-select v-model="selectedNode" :data="treeData" :props="defaultProps" placeholder="请选择" clearable @change="handleChange" ></el-tree-select> </div> </template> <script> import { TreeSelect } from 'element-ui'; export default { components: { 'el-tree-select': TreeSelect, }, data() { return { selectedNode: '', treeData: [ { id: 1, label: '节点1', children: [ { id: 2, label: '子节点1-1', }, { id: 3, label: '子节点1-2', }, ], }, { id: 4, label: '节点2', children: [ { id: 5, label: '子节点2-1', }, { id: 6, label: '子节点2-2', }, ], }, ], defaultProps: { children: 'children', label: 'label', }, }; }, methods: { handleChange(value) { console.log(value); }, }, }; </script> ``` 在这个示例中,我们使用了 Element UI 的 TreeSelect 组件,并传入了一个树形结构数据源 treeData。我们还定义了一个 defaultProps 对象,用于指定树形结构中的子节点和标签的属性名。在组件中,我们使用 v-model 指令来绑定选中的节点,使用 @change 事件来监听选中节点的变化。 当用户选择一个节点时,handleChange 方法会被调用,并将选中节点的值打印到控制台中。 希望这个示例能够帮助你实现你的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值