/** * 基于layui的tree重写 * author: hsianglee * 最近修改时间: 2019/01/07 */ layui.define(["jquery","laytpl"], function (exports) { var $ = layui.jquery; var laytpl = layui.laytpl; var hint = layui.hint(); var MOD_NAME="eleTree"; //外部接口 var eleTree={ //事件监听 on: function(events, callback){ return layui.onevent.call(this, MOD_NAME, events, callback); }, render: function(options) { var inst = new Class(options); return thisTree.call(inst); } } var thisTree=function() { var _self=this; var options = _self.config; // 暴漏外面的方法 return { // 接收两个参数,1. 节点 key 2. 节点数据的数组 updateKeyChildren: function(key,data) { if(options.data.length===0) return; return _self.updateKeyChildren.call(_self,key,data); }, updateKeySelf: function(key,data) { if(options.data.length===0) return; return _self.updateKeySelf.call(_self,key,data); }, remove: function(key) { if(options.data.length===0) return; return _self.remove.call(_self,key); }, append: function(key,data) { if(options.data.length===0) return; return _self.append.call(_self,key,data); }, insertBefore: function(key,data) { if(options.data.length===0) return; return _self.insertBefore.call(_self,key,data); }, insertAfter: function(key,data) { if(options.data.length===0) return; return _self.insertAfter.call(_self,key,data); }, // 接收两个 boolean 类型的参数,1. 是否只是叶子节点,默认值为 false 2. 是否包含半选节点,默认值为 false getChecked: function(leafOnly, includeHalfChecked) { if(options.data.length===0) return; return _self.getChecked.call(_self,leafOnly, includeHalfChecked); }, // 接收勾选节点数据的数组 setChecked: function(data) { if(options.data.length===0) return; return _self.setChecked.call(_self,data); }, // 取消选中 unCheckNodes: function() { if(options.data.length===0) return; return _self.unCheckNodes.call(_self); }, expandAll: function() { options.elem.children(".eleTree-node").children(".eleTree-node-group").empty(); _self.expandAll.call(_self,options.data,[],1,true); _self.unCheckNodes(); _self.defaultChecked(); }, unExpandAll: function() { return _self.unExpandAll.call(_self); }, reload: function(options) { return _self.reload.call(_self,options); }, search: function(value) { return _self.search.call(_self,value); } } } // 模板渲染 var TPL_ELEM=function(options,floor,parentStatus) { return [ '{{# for(var i=0;i