vue中el-tree動態(tài)初始默認選中和全選實現(xiàn)方法
更新時間:2023年09月11日 09:05:25 作者:coinisi_li
這篇文章主要給大家介紹了關于vue中el-tree動態(tài)初始默認選中和全選實現(xiàn)的相關資料,eltree默認選中eltree是一種常用的樹形控件,通常用于在網(wǎng)頁上呈現(xiàn)樹形結(jié)構(gòu)的數(shù)據(jù),例如文件夾、目錄、組織結(jié)構(gòu)等,需要的朋友可以參考下
一、我們常用到element-ui組件中,Tree 樹形控件。
官網(wǎng)鏈接:Element - The world's most popular Vue UI framework
二、實現(xiàn)效果如下圖所示
涉及:1. 樹結(jié)構(gòu)轉(zhuǎn)換一維數(shù)組
2. 與全選關聯(lián)
3. 父子組件間傳值
<template> <div> //全選選擇框 <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange" > 全選 </el-checkbox> <div style="margin: 15px 0" /> //可選擇層級框 <el-tree ref="tree" default-expand-all //是否默認展開所有節(jié)點 默認是false show-checkbox //節(jié)點是否可被選擇 :data="menuOptions" node-key="id" //每個樹節(jié)點用來作為唯一標識的屬性,整棵樹應該是唯一的 highlight-current //默認勾選的節(jié)點的 key 的數(shù)組,formmenu是從父組件拿到的值。在此組件中通過this.$refs.tree.getCheckedKeys();返回目前被選中的節(jié)點的 key 所組成的數(shù)組,傳給formmenu。 :default-checked-keys="formmenu" :props="defaultProps" /> <div style="margin: 15px 0" /> </div> </template> <script> import { getAllMenu } from '@/views/api/index'; //樹數(shù)據(jù)接口 export default { props: { formmenu: { //父組件傳值子組件 type: Array, default: () => { return []; }, }, }, data() { return { checkAll: false, menuOptions: [], mydata: [], defaultProps: { children: 'children', label: 'menuName', }, isIndeterminate: false, }; }, watch: { formmenu() { this.getTreeselect(); }, }, created() { this.getTreeselect(); }, methods: { getTreeselect() { getAllMenu().then((response) => { this.menuOptions = response.data || []; //從接口拿到樹數(shù)據(jù) this.$nextTick(() => { this.$refs.tree.setCheckedKeys(this.formmenu); //通過 keys 設置目前勾選的節(jié)點,使用此方法必須設置 node-key 屬性 this.mydata = this.convertTreeData(this.menuOptions);//因為下面要判斷數(shù)組長度,樹的結(jié)構(gòu)里包含children,所以要將其展開。 //與全選關聯(lián)起來,判斷是否全部選中還是部分選中 let checkedCount = this.formmenu.length; this.checkAll = checkedCount === this.mydata.length; this.isIndeterminate = checkedCount > 0 && checkedCount < this.mydata.length; }); }); }, // tree 結(jié)構(gòu)轉(zhuǎn)化成一維數(shù)組 convertTreeData(menuOptions) { for (let i = 0; i < menuOptions.length; i++) { if (menuOptions[i].children != undefined) { const temp = menuOptions[i].children; delete menuOptions[i].children; menuOptions = menuOptions.concat(temp); } } return menuOptions; }, handleCheckAllChange(val) { if (this.checkAll) { this.$refs.tree.setCheckedNodes(this.menuOptions); } else { this.$refs.tree.setCheckedKeys([]); } this.isIndeterminate = false; }, }, }; </script>
三、關于key和node
大家可以參考官網(wǎng)文檔,寫的還是挺清楚的。
總結(jié)
到此這篇關于vue中el-tree動態(tài)初始默認選中和全選實現(xiàn)的文章就介紹到這了,更多相關el-tree動態(tài)初始默認選中全選內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
- ElementUI中el-tree如何獲取每個節(jié)點點擊的選中狀態(tài)
- el-tree使用獲取當前選中節(jié)點的父節(jié)點數(shù)據(jù)
- Element樹形控件el-tree懶加載并設置默認展開和選中的效果
- 餓了么UI中el-tree樹節(jié)點選中高亮的兩種常用方式(highlight-current屬性)
- el-tree設置選中高亮/焦點高亮、選中節(jié)點加深背景及更改字體顏色等的方法
- vue2+elementUI的el-tree的選中、高亮、定位功能的實現(xiàn)
- 解決el-tree數(shù)據(jù)回顯時子節(jié)點部分選中父節(jié)點都全選中的坑
- el-tree限制選中個數(shù)的實例
相關文章
Vue3+TS實現(xiàn)動態(tài)路由權(quán)限的示例詳解
當我們在開發(fā)一個大型的前端應用時,動態(tài)路由權(quán)限是一個必不可少的功能,本文將介紹如何使用Vue 3和TypeScript來實現(xiàn)動態(tài)路由權(quán)限,希望對大家有所幫助2024-01-01Vue3+Element?Plus使用svg加載iconfont的處理方法
這篇文章主要介紹了Vue3+Element?Plus使用svg加載iconfont的解決方案,本文詳細介紹了如何在Element?Plus中使用iconfont,簡單的說就是要將其封裝成SVG,并且支持動態(tài)修改顏色,需要的朋友可以參考下2022-08-08