我的原型圖長(zhǎng)這樣,我的第一想法是使用antd提供的tree組件,但是發(fā)現(xiàn)似乎沒法定義右側(cè)的內(nèi)容

我的數(shù)據(jù)結(jié)構(gòu)長(zhǎng)這樣

渲染出基本結(jié)構(gòu)
? ??????定義組件,接收source數(shù)據(jù),并遞歸的將source拍平

? ??????使用ul+li結(jié)構(gòu)渲染出基本結(jié)構(gòu)

? ? ? ? 對(duì)于長(zhǎng)短不一的子級(jí)架構(gòu),使用css樣式調(diào)整,對(duì)應(yīng)數(shù)據(jù)源中的level

? ? ? ? 效果如下

樹展開與收起的處理
? ??????向li添加綁定事件

? ??????????????"level-"+v.level將作為后續(xù)dom操作時(shí)的標(biāo)識(shí)
? ??????????????class為arrow的span元素則是箭頭,將在用戶點(diǎn)擊后rotate切換
? ??????處理展開收起、箭頭切換

? ??????????????????如果level為4,則為最后一級(jí),不需要處理
? ??????????????????isHide是隱藏后打上的flag,將據(jù)此進(jìn)行操作切換
? ??????????????????通過(guò)$(ev.target).nextAll()拿到從自己開始向后所有的兄弟元素,如果找到了同級(jí)的level,則不再向下執(zhí)行操作。因?yàn)槲覀冎恍枰幚懋?dāng)前l(fā)evel下的子level即可
右側(cè)操作按鈕
? ? ? ? 從圖中可以看出,共存的是修改和查看按鈕,4級(jí)節(jié)點(diǎn)沒有新增,1級(jí)節(jié)點(diǎn)沒有刪除,故代碼如下
