1. 程式人生 > 其它 >el-tree資料回顯,解決子級部分選中,父級全選效果

el-tree資料回顯,解決子級部分選中,父級全選效果

技術標籤:vuejavascriptvue.js

在el-tree中回顯資料有一個很明顯的坑,只要回顯的資料裡有父級的id,不管當前父級下的子級是部分選中還是全選,父級的check效果都是全選。
預計效果圖:
在這裡插入圖片描述
實際效果圖:
在這裡插入圖片描述
我看了很多博主說用setChecked迴圈便利來勾選葉子節點,但我試了半天也沒用,setTimeout,nextTick都試了,無效。所以乾脆自己寫。我還是用的setCheckedKeys來實現勾選的,邏輯很簡單,arr是儲存葉子節點的陣列。利用getNode()獲取當前節點,在後段返回給我的資料中迴圈判斷當前節點是否葉子結點,是存入arr當中。在用setcheckedKey(arr)

來回顯資料,這樣就可以實現父級半選的狀態了。

const arr = []
res.data.forEach(f=>{
	if(!this.$refs.tree.getNode(f.permissionId).childNodes || !this.$refs.tree.getNode(f.permissionId).childNodes.length) {
       arr.push(f.permissionId)
     }
})
this.$refs.tree.setCheckedKeys(arr)