树使用

## zTree ### 1. 功能 引入树形控件 ### 2. 使用场景 进行商品分类等需要分级的模块操作时使用 ![image.png](https://cos.easydoc.net/27100029/files/k9wkbu95.png) ### 3. 如何使用 #### 3.1 基本使用 ##### 3.1.1 HTML 模板 ```html <!-- css --> <link rel="stylesheet" href="../../../css/zTreeStyle.css" /> <!-- html --> <ul class="ztree" id="treeDemo"></ul> <!-- javascript --> <script type="text/javascript" src="../../../lib/jquery.ztree.all.min.js"></script> ``` ##### 3.1.2 获取树的数据 以常用的分类列表为例, 需根据实际情况, 处理要渲染到树上的数据 ```javascript function searchResources() { onion.ajax.get("/common/let_list", function (res) { if (res.code == onion.networkState.SUCC) { var renderData = dataTransform(res.data); renderTree(renderData); } }); } searchResources(); ``` ##### 3.1.3 数据处理 ```javascript function dataTransform(data) { var result = []; for (var i = 0; i < data.length; i++) { var tempObj = {}; tempObj["letId"] = data[i]["letId"]; tempObj["letParentId"] = data[i]["letParentId"]; tempObj["letName"] = data[i]["letName"]; tempObj["letIsEnd"] = data[i]["letIsEnd"]; result.push(tempObj); } return result; } ``` ##### 3.1.4 渲染树 ```javascript function renderTree(zNodes) { // zTree 的参数配置,深入使用请参考 API 文档(setting 配置详解) var setting = { check: { enable: true }, data: { key: { name: "letName" }, simpleData: { enable: true, pIdKey: "letParentId", idKey: "letId" } }, callback: { onCheck: onCheck // 选择后的回调函数 } }; zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, zNodes); } ``` ##### 3.1.5 选择节点 通过调用 `onCheck` 来实现 ```javascript function onCheck(e, treeId, treeNode) { var selectedNode = zTreeObj.getCheckedNodes(true); if (selectedNode.length > 0) { var selectedIdArr = []; for (var i = 0; i < selectedNode.length; i++) { // 获得了选择的id , 存入 selectedIdArr selectedIdArr.push(selectedNode[i]['letId']); } //下一步操作 } } ``` ##### 3.1.6 获取选择状态 获取树中已被选择的界面 ```javascript function zTreeOnCheck(event, treeId, treeNode) { var treeObj = $.fn.zTree.getZTreeObj("treeDemo1"); nodes = treeObj.getCheckedNodes(true); for (var i = 0; i < nodes.length; i++) { if (nodes[i].parentId == null) { nodes.splice(i, 1) } } }; ``` #### 3.2 数据回显 ```javascript //设置节点已被选中 var zTree = $.fn.zTree.getZTreeObj("treeDemo"); // 得到树 for (var n = 0; n < zNodes.length; n++) { // 遍历树 for (var m = 0; m < letIds.length; m++) { // 遍历需要用到的数组, 由后台得到 if (zNodes[n].letId === letIds[m]) { // 数据匹配 var node = zTree.getNodeByParam("letId", zNodes[n].letId); // 数据添加 node.checked = true // 标为已选 zTree.updateNode(node); // 更新树 } } } ``` ### 4. api定义 ``` javascript onion.api = function(){ } ```