ElementUI中el-tree如何獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài)
ElementUI中el-tree獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài)
有時(shí)候需要獲取el-tree每個(gè)節(jié)點(diǎn)的點(diǎn)擊狀態(tài),可以通過(guò)以下方式,其中isCheck類型為布爾值
<el-tree
:data="organizationData"
:props="defaultProps"
:check-strictly="isAssociate"
node-key="organizationId"
:expand-on-click-node="false"
@check="getCurrentNode"
ref="tree"
>
</el-tree>1.綁定@check事件,我這里是getCurrentNode,函數(shù)名自己隨便寫
2.綁定ref
getCurrentNode(nodeObj, nodeState) {
//判斷當(dāng)前狀態(tài)是選中還是取消選中
const isCheck = this.$refs.tree.getCheckedNodes().indexOf(nodeObj) > -1
console.log(isCheck)
}附屬
element-ui el-tree 獲取當(dāng)前選中數(shù)據(jù)(含半選中的父節(jié)點(diǎn))
- 當(dāng)不給el-tree組件設(shè)置check-strictly 屬性時(shí),默認(rèn)為false,但是回顯會(huì)有一些沒(méi)有選中的節(jié)點(diǎn)都勾選上了,怎么解決呢?
- 重新回到設(shè)置 check-strictly 為 true 時(shí),父子級(jí)不互相關(guān)聯(lián),挨個(gè)點(diǎn)擊用戶體驗(yàn)不好的問(wèn)題,同時(shí)也避免了出現(xiàn)半選的情況。
- 需要簡(jiǎn)化用戶操作:
- (1)當(dāng)點(diǎn)擊復(fù)選框勾選父節(jié)點(diǎn)時(shí),其父節(jié)點(diǎn)子節(jié)點(diǎn)會(huì)統(tǒng)一跟隨選中,為選中狀態(tài)
- (1)當(dāng)點(diǎn)擊復(fù)選框勾選取消選中時(shí),其父節(jié)點(diǎn)子節(jié)點(diǎn)會(huì)統(tǒng)一跟隨為未選中狀態(tài)
- el-tree 標(biāo)簽屬性
node-key:每個(gè)樹(shù)節(jié)點(diǎn)用來(lái)作為唯一標(biāo)識(shí)的屬性,整棵樹(shù)應(yīng)該是唯一的。標(biāo)識(shí)節(jié)點(diǎn)唯一的鍵值名稱。 default-checked-keys:對(duì)應(yīng)el-tree多選樹(shù)組件初始化時(shí)默認(rèn)選中ID check-strictly:是否嚴(yán)格的遵循父子不互相關(guān)聯(lián)的做法,默認(rèn)為false check:當(dāng)復(fù)選框被點(diǎn)擊的時(shí)候觸發(fā)的方法
methods:{
<el-tree
ref="tree"
@check="check" //選中或取消選中都會(huì)執(zhí)行該方法
:check-strictly="true" //這里需要設(shè)置為true,不設(shè)置會(huì)回顯未選中的節(jié)點(diǎn)
:data="datalist" //數(shù)據(jù)源 拿接口數(shù)據(jù)賦值就可
show-checkbox
node-key="id"
:default-checked-keys="midPwList" //這里需要后臺(tái)返回id集合數(shù)組 ,給它賦值即可
:props="{children: 'children',label: 'menuName',value:'id',disabled:disabledFn}">
<template #default="{node,data}">
<span class="custom-tree-node" >
<span>{{ node.label }}</span>
<span>
<el-tag closable size="mini" v-for="(item,index) in data.btnBean" @close="cancel(item.id)" :key="index">{{item.btnname}}</el-tag>
</span>
</span>
</template>
</el-tree>
<el-button type="text" size="medium" @click="quanxian(scope.row)">權(quán)限</el-button>
//調(diào)用check事件/下面三個(gè)方法都調(diào)用就可以實(shí)現(xiàn),點(diǎn)擊勾選父節(jié)點(diǎn)會(huì)跟隨選中子節(jié)點(diǎn)/取消勾選父節(jié)點(diǎn)會(huì)跟隨全部取消選中
check(currentObj, treeStatus) {
// 用于:父子節(jié)點(diǎn)嚴(yán)格互不關(guān)聯(lián)時(shí),父節(jié)點(diǎn)勾選變化時(shí)通知子節(jié)點(diǎn)同步變化,實(shí)現(xiàn)單向關(guān)聯(lián)。
let selected = treeStatus.checkedKeys.indexOf(currentObj.id)
//不等于-1當(dāng)前是選中狀態(tài)
if (selected !== -1) {
this.selectedParent(currentObj)
//統(tǒng)一處理子節(jié)點(diǎn)為相同的勾選狀態(tài)
this.uniteChildSame(currentObj, true)
}else {
//等于 -1 是取消選中狀態(tài)
this.uniteChildSame(currentObj, false) //
}
},
uniteChildSame(treeList, isSelected) {
console.log(isSelected);
this.$refs.tree.setChecked(treeList.id, isSelected)
if (treeList.children) {
for (let i = 0; i < treeList.children.length; i++) {
this.uniteChildSame(treeList.children[i], isSelected)
}
}
},
selectedParent(currentObj) {
let currentNode = this.$refs.tree.getNode(currentObj)
console.log(currentNode);
if (currentNode.parent.key !== undefined) {
this.$refs.tree.setChecked(currentNode.parent, true)
this.selectedParent(currentNode.parent)
}
},
//回顯勾選保存的數(shù)據(jù)
quanxian(row){
this.$nextTick(()=>{
this.midPwList = JSON.parse(JSON.stringify(row.listRole));
})
}
}到此這篇關(guān)于ElementUI中el-tree獲取每個(gè)節(jié)點(diǎn)點(diǎn)擊的選中狀態(tài)的文章就介紹到這了,更多相關(guān)ElementUI el-tree獲取選中狀態(tài)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue2+elementUI的el-tree的選中、高亮、定位功能的實(shí)現(xiàn)
- el-tree使用獲取當(dāng)前選中節(jié)點(diǎn)的父節(jié)點(diǎn)數(shù)據(jù)
- 餓了么UI中el-tree樹(shù)節(jié)點(diǎn)選中高亮的兩種常用方式(highlight-current屬性)
- el-tree設(shè)置選中高亮/焦點(diǎn)高亮、選中節(jié)點(diǎn)加深背景及更改字體顏色等的方法
- 解決el-tree數(shù)據(jù)回顯時(shí)子節(jié)點(diǎn)部分選中父節(jié)點(diǎn)都全選中的坑
- el-tree樹(shù)狀控件如何定位到選中的節(jié)點(diǎn)的位置
相關(guān)文章
video.js 實(shí)現(xiàn)視頻只能后退不能快進(jìn)的思路詳解
這篇文章主要介紹了video.js 實(shí)現(xiàn)視頻只能后退不能快進(jìn)的思路詳解,主要思路是點(diǎn)擊進(jìn)度條需要獲取拖動(dòng)前的時(shí)間點(diǎn),具體實(shí)例代碼大家跟隨小編一起看看吧2018-08-08
關(guān)于include標(biāo)簽導(dǎo)致js路徑找不到的問(wèn)題分析及解決
本文為大家詳細(xì)介紹下關(guān)于使用jsp:include標(biāo)簽及<%@ include標(biāo)簽時(shí)要注意的事項(xiàng)以及實(shí)測(cè)發(fā)現(xiàn)問(wèn)題并解決問(wèn)題的全過(guò)程,感興趣的各位可以參考下哈,希望對(duì)大家有所幫助2013-07-07
利用JavaScript實(shí)現(xiàn)創(chuàng)建虛擬鍵盤的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實(shí)現(xiàn)創(chuàng)建虛擬鍵盤,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JavaScript有一定幫助,需要的可以參考一下2022-09-09
JS動(dòng)態(tài)給對(duì)象添加事件的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇JS動(dòng)態(tài)給對(duì)象添加事件的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
淺談js中用$(#ID)來(lái)作為選擇器的問(wèn)題(id重復(fù)的時(shí)候)
下面小編就為大家?guī)?lái)一篇淺談js中用$(#ID)來(lái)作為選擇器的問(wèn)題(id重復(fù)的時(shí)候)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
JS插件plupload.js實(shí)現(xiàn)多圖上傳并顯示進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了PHP結(jié)合plupload.js JS插件實(shí)現(xiàn)多圖上傳并顯示進(jìn)度條加刪除實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11
Boostrap基礎(chǔ)教程之JavaScript插件篇
Boostrap提供了12種JavaScript插件,在本文中給大家介紹了,不知道的朋友可以參考下,本文重點(diǎn)給大家介紹bootstrap基礎(chǔ)之js插件,感興趣的朋友一起學(xué)習(xí)吧2016-09-09
JavaScript緩沖運(yùn)動(dòng)實(shí)現(xiàn)方法(2則示例)
這篇文章主要介紹了JavaScript緩沖運(yùn)動(dòng)實(shí)現(xiàn)方法,簡(jiǎn)單分析了JavaScript緩沖運(yùn)動(dòng)的實(shí)現(xiàn)原理與相關(guān)運(yùn)算技巧,并給出了兩則實(shí)例代碼予以總結(jié)分析,需要的朋友可以參考下2016-01-01

