layui - dtree插件


Dtree

Dtree基本使用:

  1. 下載dtree相關js插件

    https://gitee.com/miniwatermelon/DTreeHelper/repository/archive/master.zip

    https://fly.layui.com/extend/dtree/#download

  1. 在頁面中引入dtree插件

     <link rel="stylesheet" href="layui/css/layui.css">
     <link rel="stylesheet" href="layui_ext/dtree/dtree.css">
     <link rel="stylesheet" href="layui_ext/dtree/font/dtreefont.css">
      
     <script type="text/javascript" src="layui/layui.js""></script">
    
  2. 初始化dtree組件

     <script type="text/javascript">
     	layui.extend({
     		dtree: '{/}layui_ext/dtree/dtree' 
     	}).use(['dtree','layer','jquery'],function(){
     		//初始化組件
     		var dtree = layui.dtree;
     		var layer = layui.layer;
     		var $ = layui.jquery; 		
     	});
     </script>
    
  3. 創建dtree容器

     <!-- 樹形結構的容器 --> 
     <ul id="demoTree" class="dtree" data-id="0"></ul>
    
  4. 初始化樹形結構

    <script type="text/javascript">
     	layui.extend({
     		dtree: '{/}layui_ext/dtree/dtree' 
     	}).use(['dtree','layer','jquery'],function(){
     		// 初始化組件
     		var dtree = layui.dtree;
     		var layer = layui.layer;
     		var $ = layui.jquery;
     		/* 原始數據結構 */
     		dtree.render({
     			elem: "#demoTree",// dtree的容器 
     		    url: "json/test/test.json" // 使用url加載(可與data加載同時存在) 動態數據接口
     		});
     	});
    </script>
    

Dtree的數據格式

  dtree數據格式主要分為2類:父子節點結構及list結構,默認是父子節點結構,需要json中必須存在children屬性,即其子節點.而list結構則只需要數據是一個list數組即可,使用parentId進行數據關聯.自動進行層級分類.]

原生Dtree數據格式8

{
	"status":{"code":200,"message":"操作成功"},
	"data":[{
		"id":"001",
		"title": "湖南省",
		"last": false,
		"level": "1",
		"parentId": "001",
		"checkArr": "",
		"children":[{
			"id":"001001",
			"title": "長沙市",
			"last":true,
			"hide":true,
			"parentId": "001",
			"checkArr": [{"type": "0", "checked": "0"}],
			"level": "2"
		},{
			"id":"001002",
			"title": "株洲市",
			"last":true,
			"parentId": "001",
			"checkArr": [{"type": "0", "checked": "0"}],
			"level": "2"
		}]
	}]
}

list風格數據格式

{
  "status":{"code":200,"message":"操作成功"},
  "data":[
    {"id":"001","title":"供水東區","waterSup":"79040.0 ","waterSold":"58625.7 ","rateProAndMark":"25.8 ","parentId":"0"},
    {"id":"001001","title":"祥居家紡","waterSup":"12742.6 ","waterSold":"11725.9 ","rateProAndMark":"8.0 ","parentId":"001"},
    {"id":"001002","title":"天通錦綉城","waterSup":"5496.6 ","waterSold":"4246.0 ","rateProAndMark":"22.8 ","parentId":"001"}
  ]
}

  dtree的數據風格也分為2類,即原生的風格和layui風格.原生風格中,status標識數據的狀態,其中包含業務碼和業務信息,code即業務碼,默認:200.當code不為200時,數據無法進行解析.data是具體的業務數據。layui風格,是code,msg,data,在同一級,且code正確值是0,只有0時才會進行數據解析,可以通過:

    response:{message:"msg",statusCode:200}

list與layui組合格式

{
	"code":200,
	"msg":"操作成功",
	"data":[
    {"id":"001","title":"供水東區","waterSup":"79040.0 ","waterSold":"58625.7 ","rateProAndMark":"25.8 ","parentId":"0"},
    {"id":"001001","title":"祥居家紡","waterSup":"12742.6 ","waterSold":"11725.9 ","rateProAndMark":"8.0 ","parentId":"001"}
  ]
}
<script type="text/javascript">
 	layui.extend({
 		dtree: '{/}layui_ext/dtree/dtree' 
 	}).use(['dtree','layer','jquery'],function(){
 		//初始化組件
 		var dtree = layui.dtree;
 		var layer = layui.layer;
 		var $ = layui.jquery;
 		/* list結構 + layui 風格 */
 		dtree.render({
 			elem: "#dataTree3",// dtree的容器 
 			dataStyle: "layuiStyle",//指定風格  layui 風格
 			dataFormat: "list",// 指定數據格式  list 格式
 			response:{message:"msg",statusCode:200}, //指定響應數據的 狀態碼
 		    url: "json/test/test2.json", // 使用url加載(可與data加載同時存在) 動態數據接口
 		   	checkbar: true,// 開啟復選框
 		  	checkbarType: "all", //  all 
 		  	initLevel:2,// 展開層級關系
 		  
 		});
 		
 	});
 </script>

核心方法

方法名 描述
render 初始化
reload 重新加載
click 模擬單擊事件
getNowParam 獲取當前選中的值
getParam 獲取指定的節點選中的值
getParentParam 獲取上級節點
getAllParentParam 獲取全部上級節點
getChildParam 獲取子節點
changeCheckbarNodes 判斷復選框狀態是否發生改變(選中/不選中)
dataInit 初始化選中的節點
chooseDataInit 初始化被選中的復選框
getCheckbarNodesParam 獲取復選框被選中的值
changeTree 監聽菜單的展開和收縮
node 監聽節點的單擊
chooseDone 監聽復選框被點擊
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
 	<link rel="stylesheet" href="layui/css/layui.css">
  	<link rel="stylesheet" href="layui_ext/dtree/dtree.css">
  	<link rel="stylesheet" href="layui_ext/dtree/font/dtreefont.css">
</head>
<body>
 <!-- 樹形結構的容器 --> 
  <ul id="demoTree" class="dtree" data-id="0"></ul>
  
  <p>
  	<button id="getNowParamBtn">獲取當前選中的值</button>&nbsp;
  	
  	<button id="getParamBtn">獲取指定節點的值</button>&nbsp;
  	<button id="getParentParamBtn">獲取父節點</button>&nbsp;
  	<button id="getAllParentParamBtn">獲取所有的父節點</button>&nbsp;
  	<button id="getChildParamBtn">獲取所有的子節點</button>&nbsp;
  	<button id="changeCheckbarNodesBtn">判斷復選框狀態是否改變</button>&nbsp;
  	<button id="dataInitBtn">初始化選中的值</button>&nbsp;
  	<button id="chooseDataInitBtn">初始化選中的復選框</button>&nbsp;
  	<button id="getCheckbarNodesParamBtn">獲取復選框被選中的值</button>&nbsp;
  
  </p>
 
 <script type="text/javascript" src="layui/layui.js"></script>
 <script type="text/javascript">
 	layui.extend({
 		dtree: '{/}layui_ext/dtree/dtree'
 	}).use(['dtree','layer','jquery'],function(){
 		//初始化組件
 		var dtree = layui.dtree;
 		var layer = layui.layer;
 		var $ = layui.jquery;
 		/* list結構 + layui 風格 */
 		var DemoTree = dtree.render({
 			elem: "#demoTree",// dtree的容器 
 			dataStyle: "layuiStyle",//指定風格  layui 風格
 			dataFormat: "list",// 指定數據格式  list 格式
 			response:{message:"msg",statusCode:200}, //指定響應數據的 狀態碼
 		    url: "json/test/test2.json", // 使用url加載(可與data加載同時存在) 動態數據接口
 		   	checkbar: true,// 開啟復選框
 		  	checkbarType: "all", //  all 
 		  	initLevel:2,// 展開層級關系
 		  	done:function(res,$obj){
 		  	  //點擊 對應節點
 		  		var params = dtree.chooseDataInit("demoTree", "001,002,003");
 		  	}
 		});
 		// dtree 點擊事件
 		dtree.on("node('demoTree')" ,function(obj){
 			  console.log("單擊事件");
 			  console.log(obj.param); // 點擊當前節點傳遞的參數
 			  console.log(obj.dom); // 當前節點的jquery對象
 			  console.log(obj.childParams); // 當前節點的所有子節點參數
 			  console.log(obj.parentParam); // 當前節點的父節點參數
 		});
 		//獲取當前被選中的值
 		$("#getNowParamBtn").click(function(){
 			var param = dtree.getNowParam(DemoTree);
 			console.log(param);
 		});
 		
 		//獲取指定的節點值
 		$("#getParamBtn").click(function(){
 			var param = dtree.getParam("demoTree","001");
 			console.log(param);
 		});
 		//獲取父節點
 		$("#getParentParamBtn").click(function(){
 			var param = dtree.getParentParam(DemoTree,"001001");
 			console.log(param);
 		});
 		//獲取所有的父節點
 		$("#getAllParentParamBtn").click(function(){
 			var param = dtree.getAllParentParam(DemoTree,"001001");
 			console.log(param);
 		});
 		//獲取子節點
 		$("#getChildParamBtn").click(function(){
 			var param = dtree.getChildParam(DemoTree,"001");
 			console.log(param);
 		});
 		//判斷是否存在復選框被選中
 		$("#changeCheckbarNodesBtn").click(function(){
 			var flag = dtree.changeCheckbarNodes("demoTree");
 			console.log(flag);
 		});
 		//初始化選中的值
 		$("#dataInitBtn").click(function(){
 			var params = dtree.dataInit("demoTree", "001");
 		});
 		//初始化選中的復選框
 		$("#chooseDataInitBtn").click(function(){
 			var params = dtree.chooseDataInit("demoTree", "001,002,003");
 		});
 		//獲取復選框被選中的值
 		$("#getCheckbarNodesParamBtn").click(function(){
 			var params = dtree.getCheckbarNodesParam("demoTree");
 			console.log(params);
 		});
 		//監聽菜單展開收縮狀態
 		dtree.on("changeTree(demoTree)",function(obj){
 			  console.log(obj.param); // 點擊當前節點傳遞的參數
 			  console.log(obj.dom); // 當前節點的jquery對象
 			  console.log(obj.show); // 節點展開為true,關閉為false
 		});
 		//監聽復選框被點擊
 		dtree.on("chooseDone(demoTree)",function(d){
 			console.log($(this));
 			//d 選中狀態的節點
 			 console.log(d); 
 			 console.log(d.checkbarParams); 
 		});
	
 	});
 </script>
</body>
</html>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM