element-ui?tree?手動展開功能實現(xiàn)(異步樹也可以)
背景
項目中用到了vue的element-ui框架,用到了el-tree組件。由于數(shù)據(jù)量很大,使用了數(shù)據(jù)懶加載模式,即異步樹。異步樹采用復(fù)選框進(jìn)行結(jié)點選擇的時候,沒法自動展開,官方文檔找了半天也沒有找到好的辦法! 找不到相關(guān)的配置,或者方法可以使用。 經(jīng)過調(diào)試與閱讀elment-ui源碼才發(fā)現(xiàn)有現(xiàn)成的方法可以進(jìn)行結(jié)點展開。下面就介紹結(jié)點展開的實現(xiàn)!
1.監(jiān)聽復(fù)選框點擊事件check
<el-tree
:props="mulprops"
:load="loadNode"
lazy
node-key="id"
show-checkbox
accordion
@current-change="currentChange"
:filter-node-method="filterNode"
@check="handleCheck"
ref="tree"
:default-checked-keys="defaultCheckedNodes"
:default-expanded-keys="defaultExpandedNodes">
</el-tree>2.手動展開,使用node.expand()方法
handleCheck(nodeData, treeChecked) {
let node = this.$refs.tree.getNode(nodeData.id)
//將選中的未展開的節(jié)點進(jìn)行展開
if(node.checked && !node.expanded){
node.expand(function(){
for(let i=0; i< node.childNodes.length; i++){
node.childNodes[i].expand()
}
})
}
}項目中的實現(xiàn)
(復(fù)選框勾選后能自動展開并選中,先展開再勾選也可以自動展開)
1.監(jiān)聽check-change事件
<el-tree
:props="mulprops"
:load="loadNode"
lazy
node-key="id"
show-checkbox
accordion
@check-change="handleCheckChange"
:filter-node-method="filterNode"
ref="tree"
:default-checked-keys="defaultCheckedNodes"
:default-expanded-keys="defaultExpandedNodes"
>
</el-tree>2.編寫展開結(jié)點方法
handleCheckChange(nodeData, nodeSelected) {
//展開選中的未展開的節(jié)點
let tree = this.$refs.tree;
let node = tree.getNode(nodeData.id)
//展開選中的未展開的節(jié)點
this.expandNotExpandNodes(node);
//具體業(yè)務(wù)實現(xiàn)
console.log(nodeData, nodeSelected)
},
//展開選中的未展開的節(jié)點
expandNotExpandNodes(node) {
let tree = this.$refs.tree;
if (node.checked && !node.expanded && !node.isLeaf) {
node.expand(function () {
let childNodes = node.childNodes;
for (let i = 0; i < childNodes.length; i++) {
let childNode = childNodes[i];
//手動觸發(fā)check-change事件,事件處理函數(shù)中回繼續(xù)調(diào)用此函數(shù),形成遞歸展開
tree.$emit('check-change', childNode.data, childNode.checked, childNode.indeterminate);
}
})
}
},到此這篇關(guān)于element-ui tree 手動進(jìn)行展開(異步樹也可以)的文章就介紹到這了,更多相關(guān)element-ui tree手動展開內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue3+vite+ts使用require.context問題
這篇文章主要介紹了vue3+vite+ts使用require.context問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
ElementUI中兩個Select選擇聯(lián)動效果實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于ElementUI中兩個Select選擇聯(lián)動效果實現(xiàn)的相關(guān)資料,在前端項目開發(fā)中,經(jīng)常會遇到省市縣三級聯(lián)動的下拉列表框組的問題,需要的朋友可以參考下2023-08-08
vue3?keep-alive實現(xiàn)tab頁面緩存功能
如何在我們切換tab標(biāo)簽的時候,緩存標(biāo)簽最后操作的內(nèi)容,簡單來說就是每個標(biāo)簽頁中設(shè)置的比如搜索條件及結(jié)果、分頁、新增、編輯等數(shù)據(jù)在切換回來的時候還能保持原樣,這篇文章介紹vue3?keep-alive實現(xiàn)tab頁面緩存功能,感興趣的朋友一起看看吧2023-04-04
vue點擊導(dǎo)航頁面實現(xiàn)自動滾動到特定位置
這篇文章主要介紹了vue點擊導(dǎo)航頁面實現(xiàn)自動滾動到特定位置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03

