layui 第三方組件平臺

返回首頁 發(fā)布組件

使表格增加了樹形結(jié)構(gòu)展示的能力.完全依賴于layui的表格. 正因為如此,您可以像使用表格組件一樣使用該組件.layui的表格功能.全都有.全都有.全都有. 該組件最大的特點就是原封不動的調(diào)用了官方的table組件.也就是說.隨著官方的更新.可以隨時使用table更好更炫酷的功能而不需要對本組件做任何操作.

更新:2021-4-27 創(chuàng)建:2021-3-19

文檔

介紹
使官方表格組件具備樹形結(jié)構(gòu)展示能力(忘記怎么上傳代碼包了...現(xiàn)在github與gitee上面是最新的...)

特別說明
1. 編寫該組件的目的是因為看到其他的組件都或多或少的重寫了官方原版的layui.table組件.感覺一個是增加了學(xué)習(xí)成本.一個是沒有與官方保持一致.
2. 此組件只是填充了官方表格組件的parseData()方法與done().目的是為了整理數(shù)據(jù)排序以及展示.其他沒做任何多余的工作.(您不用擔(dān)心.您可以正常使用官方為您提供的這兩個方法.)
3. 組件的getTable()方法返回了layui.table組件的實例.因此您具有了與layui.table一樣的表格操作能力.畢竟返回的本來就是layui.table.
4. 很遺憾 [委屈] .本組件污染了原始表格.為了實現(xiàn)點擊折疊展開功能.我給表格的某個字段綁定了點擊事件.但是除此之外我不知道該怎么做才能在實現(xiàn)展開折疊操作時候做到不污染原始表格.可能會給您帶來困擾.
4.1 建議將 title 字段設(shè)置為用戶平時不點擊的字段以期將影響降低到最小[微笑]

引入
組件引入方法請閱讀 官方文檔
https://www.layui.com/doc/base/modules.html#extend

方法
方法名 描述
render 表格渲染.一般第一次顯示調(diào)用.或者其他操作比如刪除/添加等操作后也可以調(diào)用.第二次調(diào)用可以不傳參數(shù).如果傳遞參數(shù)會將上次參數(shù)覆蓋.
reload 表格重載,內(nèi)部調(diào)用了table.reload().一般用于搜索后顯示數(shù)據(jù).提交where條件給后端.
getTable 由于該組件內(nèi)部使用了layui.table.如果想更細(xì)粒度的操作table.可以使用此方法獲取table對象
其他方法 請閱讀源碼,只要方法名不以下劃線開頭都可以使用.如果需要的話.
參數(shù)
名稱 描述 必填 默認(rèn)值
keyId 數(shù)據(jù)ID的字段.一般對應(yīng)數(shù)據(jù)庫的主鍵.默認(rèn): 'id' false id
keyPid 數(shù)據(jù)父ID,與父級數(shù)據(jù)的ID相等.此參數(shù)與ID確定上下級關(guān)系. false pid
title 泛指數(shù)據(jù)標(biāo)題,來自列(cols)的field屬性.表明此字段在被點擊時候會展開/折疊下級. false name
indent 縮進(jìn)字符.在此設(shè)置的字符會添加到title列前面.次數(shù)為層級的值.效果就是層級越靠下.縮進(jìn)的越多. false ' ? ?'
icon
標(biāo)題前面的小圖標(biāo).
在展開時候顯示的樣式使用icon.open設(shè)置,
折疊時候使用icon.close.
值是css的一個class屬性字符串.該字符串可以包含多個類.

false 展開: layui-icon layui-icon-triangle-d
折疊: layui-icon layui-icon-triangle-r
showCache 這里就要好好說說了.該字段表示數(shù)據(jù)展開折疊緩存.刷新時候可以保留上次的展開狀態(tài)
a).如果傳false表示不使用緩存.此時渲染完成的狀態(tài)為全部折疊;
b).如果傳true.會把操作過程中的展開折疊狀態(tài)記錄到 localStorage 中.key為 unfoldStatus;
c).可以傳一個字符串.這時候與傳true類似,區(qū)別是 localStorage 的 key 為傳入的字符串.建議傳字符串.可以有效避免多個頁面之間的沖突.
false unfoldStatus
sort 排序方式,可選值為 asc / desc, 默認(rèn) asc.必須小寫.會影響所有層級. false asc
有沒有發(fā)現(xiàn)全部都不是必填項[嘻嘻]



效果圖


代碼示例
layui.use(['tableTreeDj'], function() {
const tableTree = layui.tableTreeDj;
const $ = layui.$;

// 與 layui.table 的參數(shù)完全一致,內(nèi)部本來就是把這些參數(shù)傳遞給table模塊的
const objTable = {
elem: '#test'
,url: "./getData"
,cols: [[
{field:'name', title:'名稱' },
{field:'id', title:'ID' },
{field:'pid', title:'上級ID' },
{field:'level', title:'層級' },
{field:'agent_id', title:'代理ID' },
]]
,id:'list'
}

// 本組件用到的參數(shù), 組件內(nèi)部有默認(rèn)值,與此一致,因此您可以只聲明不一致的配置項
const config = {
keyId: "id" // 當(dāng)前ID
, keyPid: "pid" // 上級ID
, title: "name" // 標(biāo)題名稱字段,此字段td用于綁定單擊折疊展開功能
, indent: ' ? ?' // 子級td的縮進(jìn).可以是其他字符
// 圖標(biāo)
, icon: {
open: 'layui-icon layui-icon-triangle-d', // 展開時候圖標(biāo)
close: 'layui-icon layui-icon-triangle-r', // 折疊時候圖標(biāo)
}
, showCache: true //是否開啟展開折疊緩存,默認(rèn)不開啟.
, sort: 'asc'
};
// 渲染
tableTree.render(objTable, config);

// 其他一系列操作后.重新渲染表格,此時可以不傳遞參數(shù).內(nèi)部記錄了上次傳入的參數(shù).
tableTree.render();

// 點擊搜索按鈕后重載數(shù)據(jù).此時可以傳入where條件.obj參數(shù)與官方表格一致.
obj = {where:{id: 1}};
tableTree.reload(obj);
});

下載

去碼云下載 去 GitHub 下載
該擴(kuò)展組件由第三方用戶主動投遞,并由其自身進(jìn)行維護(hù),本站僅做收集。