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),可以通過以下方式,其中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ì)有一些沒有選中的節(jié)點(diǎn)都勾選上了,怎么解決呢?
- 重新回到設(shè)置 check-strictly 為 true 時(shí),父子級(jí)不互相關(guān)聯(lián),挨個(gè)點(diǎn)擊用戶體驗(yà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è)樹節(jié)點(diǎn)用來作為唯一標(biāo)識(shí)的屬性,整棵樹應(yīng)該是唯一的。標(biāo)識(shí)節(jié)點(diǎn)唯一的鍵值名稱。 default-checked-keys:對(duì)應(yīng)el-tree多選樹組件初始化時(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樹節(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樹狀控件如何定位到選中的節(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路徑找不到的問題分析及解決
本文為大家詳細(xì)介紹下關(guān)于使用jsp:include標(biāo)簽及<%@ include標(biāo)簽時(shí)要注意的事項(xiàng)以及實(shí)測(cè)發(fā)現(xiàn)問題并解決問題的全過程,感興趣的各位可以參考下哈,希望對(duì)大家有所幫助2013-07-07利用JavaScript實(shí)現(xiàn)創(chuàng)建虛擬鍵盤的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript實(shí)現(xiàn)創(chuàng)建虛擬鍵盤,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JavaScript有一定幫助,需要的可以參考一下2022-09-09JS動(dòng)態(tài)給對(duì)象添加事件的簡(jiǎn)單方法
下面小編就為大家?guī)硪黄狫S動(dòng)態(tài)給對(duì)象添加事件的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07淺談js中用$(#ID)來作為選擇器的問題(id重復(fù)的時(shí)候)
下面小編就為大家?guī)硪黄獪\談js中用$(#ID)來作為選擇器的問題(id重復(fù)的時(shí)候)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02JS插件plupload.js實(shí)現(xiàn)多圖上傳并顯示進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了PHP結(jié)合plupload.js JS插件實(shí)現(xiàn)多圖上傳并顯示進(jìn)度條加刪除實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11Boostrap基礎(chǔ)教程之JavaScript插件篇
Boostrap提供了12種JavaScript插件,在本文中給大家介紹了,不知道的朋友可以參考下,本文重點(diǎn)給大家介紹bootstrap基礎(chǔ)之js插件,感興趣的朋友一起學(xué)習(xí)吧2016-09-09JavaScript緩沖運(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