站長開發Dotnet9網站後台前端的文章編輯分類管理功能時遇到了
element-ui的tree元件使用問題,個人嘗試未解決,下面一文是前端大佬給出的解決方案,至於問題是什麼、怎麼解決的,請接著看吧,希望對大家有用。
正文開始
前言:使用element-ui中tree元件時,天真的以為只要動態修改default-checked-keys這個屬性值得變化,預設勾選的值也會隨之變化,實際發現並不是這樣的。
我們先看看官網上對default-checked-keys的定義:(看完依舊覺得沒問題)

於是我就去探尋了一下原因是啥:監聽到defaultCheckedKeys的變化後遍歷陣列,添加選取狀態,但是當defaultCheckedKeys陣列減少時,前面設定的選取的key不會取消。
原因是:tree.vue中使用watch監聽default-checked-keys值得變化,呼叫了以下方法:

在 tree-store.js 中又使用了此方法

終於知道原因了,只有監聽到default-checked-keys值變化時才會遍歷default-checked-keys陣列設定給裡面的值設定選取狀態,但是沒有取消選取狀態的操作,所以當在default-checked-keys原有的陣列裡面增加需要選取的資料,新增的節點會被選取,反之則不會!!!
這該如何是好???
思路:
- 修改依賴代碼
我在這邊部落格中已提到:el-tree 處理大量資料
- 再仔細看看文件找思路,找到了:就是呼叫
setCheckedKeys方法,將需要選取的key值陣列傳進去,他會重新設定選取狀態:

使用該方法的時候注意了:
tree已經存在dom中後呼叫,如果tree沒有載入完成,setCheckedKeys是不存在的,所以我們需要使用this.$nextTick(callback)方法,該方法會在 dom 載入完畢之後,執行回呼函數。呼叫完這個方法後,如果你使用懶加載載入節點的話你手動設定的半選狀態會沒有哦,記得重置一下半選。
本文來自轉載。
作者:水星夢月
原文標題:el-tree 中 default-checked-keys 屬性變化不生效
原文連結:https://blog.csdn.net/monparadis/article/details/114087838