仿elementUI文檔重寫
eleTree.render()參數(shù)說明
1. elem: "", //指定原始 table 容器的選擇器或 DOM
2. data: [], 直接賦值數(shù)據(jù)
3. emptText: "暫無數(shù)據(jù)", // 內(nèi)容為空的時候展示的文本
4. renderAfterExpand: true, // 是否在第一次展開某個樹節(jié)點后才渲染其子節(jié)點
5. highlightCurrent: false, // 是否高亮當前選中節(jié)點,默認值是 false。
6. defaultExpandAll: false, // 是否默認展開所有節(jié)點
7. expandOnClickNode: true, // 是否在點擊節(jié)點的時候展開或者收縮節(jié)點, 默認值為 true,如果為 false,則只有點箭頭圖標的時候才會展開或者收縮節(jié)點。
8. checkOnClickNode: false, // 是否在點擊節(jié)點的時候選中節(jié)點,默認值為 false,即只有在點擊復選框時才會選中節(jié)點。
9. defaultExpandedKeys: [], // 默認展開的節(jié)點的 key 的數(shù)組
10. autoExpandParent: true, // 展開子節(jié)點的時候是否自動展開父節(jié)點
11. showCheckbox: false, // 節(jié)點是否可被選擇
12. checkStrictly: false, // 在顯示復選框的情況下,是否嚴格的遵循父子不互相關(guān)聯(lián)的做法,默認為 false
13. defaultCheckedKeys: [], // 默認勾選的節(jié)點的 key 的數(shù)組
14. accordion: false, // 是否每次只打開一個同級樹節(jié)點展開(手風琴效果)
15. indent: 16, // 相鄰級節(jié)點間的水平縮進,單位為像素
16. lazy: false, // 是否懶加載子節(jié)點,需與 load 方法結(jié)合使用
17. load: function() {}, // 加載子樹數(shù)據(jù)的方法,僅當 lazy 屬性為true 時生效
18. draggable: false, // 是否開啟拖拽節(jié)點功能
19. contextmenuList: [], // 啟用右鍵菜單,支持的操作有:"copy","add","edit","remove"
20. method: "get", // 接口http請求類型,默認:get
21. url: "", // 異步數(shù)據(jù)接口
22. contentType: "", // 發(fā)送到服務端的內(nèi)容編碼類型
23. headers: {}, // 接口的請求頭。如:headers: {token: 'sasasas'}
24. done: null, // 數(shù)據(jù)請求完成的回調(diào)函數(shù),只有異步請求才會有
25. response: { // 對于后臺數(shù)據(jù)重新定義名字
statusName: "code",
statusCode: 0,
dataName: "data"
},
26. request: { // 對后臺返回的數(shù)據(jù)格式重新定義
name: "label",
key: "id",
children: "children",
checked: "checked",
disabled: "disabled",
isLeaf: "isLeaf"
},
27. searchNodeMethod: null // 對樹節(jié)點進行篩選時執(zhí)行的方法,返回 true 表示這個節(jié)點可以顯示,返回 false 則表示這個節(jié)點會被隱藏
基礎(chǔ)方法
var el=eleTree.render({
// ...
})
> el.updateKeyChildren(key,data) // 更新子節(jié)點
> el.updateKeySelf(key,data) //更新當前節(jié)點
> el.getChecked(leafOnly, includeHalfChecked) // 獲取選中的節(jié)點,接收兩個 boolean 類型的參數(shù),1. 是否只是葉子節(jié)點,默認值為 false 2. 是否包含半選節(jié)點,默認值為 false
> el.setChecked(arr) //設置選中的節(jié)點,傳入數(shù)組key值
> el.unCheckNodes() //取消所有選中的節(jié)點
> el.expandAll() //展開所有
> el.unExpandAll() //合并所有
> el.remove(key) //刪除節(jié)點
> el.append(key,data) //添加子節(jié)點
> el.insertBefore(key,data) //添加到節(jié)點之前
> el.insertAfter(key,data) //添加到節(jié)點之后
> el.reload(data) //重新加載樹
> el.search(val) //搜索樹(val為搜索值),執(zhí)行此方法會去執(zhí)行searchNodeMethod方法,searchNodeMethod的第一個參數(shù)為val搜索值,第二個參數(shù)為每個節(jié)點的數(shù)據(jù)
事件監(jiān)聽
eleTree.render({
// ...
})
// 節(jié)點點擊事件
eleTree.on("nodeClick(data1)",function(d) {
console.log(d.data); // 點擊節(jié)點對于的數(shù)據(jù)
console.log(d.event); // event對象
console.log(d.node); // 點擊的dom節(jié)點
console.log(this); // 與d.node相同
})
// input被選中事件
eleTree.on("nodeChecked(data1)",function(d) {
console.log(d.data); // 點擊節(jié)點對于的數(shù)據(jù)
console.log(d.isChecked); // input是否被選中
console.log(d.node); // 點擊的dom節(jié)點
console.log(this); // input對于的dom
})
// 鼠標右鍵事件
eleTree.on("nodeContextmenu(data1)",function(d) {
console.log(d.data); // 點擊節(jié)點對于的數(shù)據(jù)
console.log(d.event); // event對象
console.log(d.node); // 點擊的dom節(jié)點
console.log(this); // 與d.node相同
})
// 節(jié)點被拖拽事件
eleTree.on("nodeDrag(data1)",function(d) {
console.log(d);
d.stop(); // 取消拖拽
console.log(d.current); // 起始節(jié)點對應的dom和數(shù)據(jù)
console.log(d.target); // 鼠標落點對應的dom和數(shù)據(jù)
console.log(this); // 鼠標落點對應的dom
})
// 添加子節(jié)點事件
eleTree.on("nodeAppend(data1)",function(d) {
console.log(d.data); // 點擊節(jié)點對于的數(shù)據(jù)
console.log(d.node); // 點擊的dom節(jié)點
console.log(this); // 與d.node相同
d.stop(); // 取消添加
d.setData({ // 自定義數(shù)據(jù)
key: 666,
label: "aaa"
})
})
// 添加節(jié)點之前事件
eleTree.on("nodeInsertBefore(data1)",function(d) {
console.log(d.data); // 點擊節(jié)點對于的數(shù)據(jù)
console.log(d.node); // 點擊的dom節(jié)點
console.log(this); // 與d.node相同
d.stop(); // 取消添加
d.setData({ // 自定義數(shù)據(jù)
key: 666,
label: "aaa"
})
})
// 添加節(jié)點之后事件
eleTree.on("nodeInsertAfter(data1)",function(d) {
console.log(d.data); // 點擊節(jié)點對于的數(shù)據(jù)
console.log(d.node); // 點擊的dom節(jié)點
console.log(this); // 與d.node相同
d.stop(); // 取消添加
d.setData({ // 自定義數(shù)據(jù)
key: 666,
label: "aaa"
})
})
// 節(jié)點被編輯事件
eleTree.on("nodeEdit(data1)",function(d) {
console.log(d.data); // 點擊節(jié)點對于的數(shù)據(jù)
console.log(d.node); // 點擊的dom節(jié)點
console.log(d.value); // 新輸入的值
console.log(this); // 與d.node相同
d.stop(); // 取消編輯
})
// 節(jié)點被刪除事件
eleTree.on("nodeRemove(data1)",function(d) {
console.log(d.data); // 點擊節(jié)點對于的數(shù)據(jù)
console.log(d.node); // 點擊的dom節(jié)點
d.stop(); // 取消刪除
})