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)半選的情況。
- 需要簡化用戶操作:
- (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)文章
JavaScript經(jīng)典案例之簡易計(jì)算器
這篇文章主要為大家詳細(xì)介紹了JavaScript經(jīng)典案例之簡易計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
JavaScript浮點(diǎn)數(shù)及運(yùn)算精度調(diào)整詳解
浮點(diǎn)數(shù)的精度問題不是JavaScript特有的,本文主要介紹了JavaScript浮點(diǎn)數(shù)及運(yùn)算精度調(diào)整詳解,有需要的朋友可以了解一下。2016-10-10
基于JavaScript代碼實(shí)現(xiàn)隨機(jī)漂浮圖片廣告
在網(wǎng)上有很多這樣的代碼,不過未必符合W3C標(biāo)準(zhǔn),因?yàn)樵陬^部加上<!DOCTYPE html>類似標(biāo)簽之后,漂浮效果就會(huì)失效,下面分享一個(gè)符合標(biāo)準(zhǔn)的漂浮代碼,使需要的朋友免去大量改造代碼的繁瑣2016-01-01
JavaScript定義簡單的頁面復(fù)選框?qū)崿F(xiàn)全選操作
本文主要介紹了JavaScript定義簡單的頁面復(fù)選框?qū)崿F(xiàn)全選操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
html+css+js實(shí)現(xiàn)canvas跟隨鼠標(biāo)的小圓特效源碼
這篇文章主要介紹了html+css+js實(shí)現(xiàn)canvas跟隨鼠標(biāo)的小圓特效源碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03

