亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

el-select與el-tree結(jié)合使用實(shí)現(xiàn)樹形結(jié)構(gòu)多選框

 更新時(shí)間:2022年10月19日 16:30:15   作者:終歸墟  
我們?cè)趯?shí)際開發(fā)中需要用到下拉樹,elementUI是沒有這個(gè)組件的,我們就要自己去寫了,下面這篇文章主要給大家介紹了關(guān)于el-select與el-tree結(jié)合使用實(shí)現(xiàn)樹形結(jié)構(gòu)多選框的相關(guān)資料,需要的朋友可以參考下

前言

接上篇文章需求,選擇樹形結(jié)構(gòu)的時(shí)候有多選的情況,用上一篇的單選并不能解決問題,下圖是這次達(dá)到的效果

話不多說,上代碼

html

<el-select v-model="value" multiple placeholder="請(qǐng)選擇" :popper-append-to-body="false"
    @remove-tag="removetag"  collapse-tags @clear="clearall" clearable >
    <el-option :value="selectTree" class="setstyle" disabled>
		<el-tree :data="list" :props="defaultProps" ref="tree"
		show-checkbox check-strictly :expand-on-click-node="false" node-key="id"
		check-on-click-node @check-change="handleNodeClick"></el-tree>
	</el-option>
</el-select>

js

<script>
	export default {
		data() {
			return {
				value:[],
				selectTree:[],
				defaultProps:{
					children: 'children',
					label: 'label'
				},
				list: [{
					id: 1,
					label: '一級(jí) 2',
					children: [{
						id: 3,
						label: '二級(jí) 2-1',
						children: [{
							id: 4,
							label: '三級(jí) 3-1-1'
						}, {
							id: 5,
							label: '三級(jí) 3-1-2',
						}]
					}, {
						id: 2,
						label: '二級(jí) 2-2',
						children: [{
							id: 6,
							label: '三級(jí) 3-2-1'
						}, {
							id: 7,
							label: '三級(jí) 3-2-2',
						}]
					}]
				}],
			}
		},
		methods: {
			handleNodeClick(data,self,child) {
				console.log(this.$refs.tree.getCheckedNodes())
				let datalist = this.$refs.tree.getCheckedNodes()
				this.selectTree = [] //置空
				this.value = []
				datalist.forEach((item)=>{
					this.selectTree.push({id:item.id,label:item.label})
					this.value.push(item.label)
				})
			},
            removetag(){
				this.selectTree.splice(0,1)
				let setlist = this.$refs.tree.getCheckedNodes()
				setlist.splice(0,1)
				this.$nextTick(() => {
					this.$refs.tree.setCheckedNodes(setlist) 
				})
			},
			clearall(){
				this.selectTree = []
				this.$nextTick(() => {
					this.$refs.tree.setCheckedNodes([]) 
				})
			},
		},
	}
</script>

css   糾正樣式問題,其中cursor修改禁用后的鼠標(biāo)狀態(tài),

.setstyle {
	min-height: 200px;
	padding: 0 !important;
	margin: 0;
	overflow: auto;
	cursor: default !important;
}

思路:

通過el-tree來選擇所需要的節(jié)點(diǎn)和獲取數(shù)據(jù),將el-select的選擇關(guān)閉,防止點(diǎn)擊時(shí)報(bào)錯(cuò),通過el-tree獲取的數(shù)據(jù)來關(guān)聯(lián)el-select并渲染輸入框的內(nèi)容,而不是通過option來獲取數(shù)據(jù)(所以el-option的狀態(tài)時(shí)disabled)。

重點(diǎn):

1.this.$refs.tree.getCheckedNodes() 獲取選中的節(jié)點(diǎn)

2.cursor:default  修改鼠標(biāo)狀態(tài)

3.check-change 節(jié)點(diǎn)選中狀態(tài)發(fā)生變化時(shí)觸發(fā)

涉及內(nèi)容:

popper-append-to-body是否將彈出框插入至 body 元素。在彈出框的定位出現(xiàn)問題時(shí),可將該屬性設(shè)置為 falseboolean
show-checkbox節(jié)點(diǎn)是否可被選擇boolean
check-strictly在顯示復(fù)選框的情況下,是否嚴(yán)格的遵循父子不互相關(guān)聯(lián)的做法,默認(rèn)為 falseboolean
expand-on-click-node是否在點(diǎn)擊節(jié)點(diǎn)的時(shí)候展開或者收縮節(jié)點(diǎn), 默認(rèn)值為 true,如果為 false,則只有點(diǎn)箭頭圖標(biāo)的時(shí)候才會(huì)展開或者收縮節(jié)點(diǎn)。boolean
check-on-click-node是否在點(diǎn)擊節(jié)點(diǎn)的時(shí)候選中節(jié)點(diǎn),默認(rèn)值為 false,即只有在點(diǎn)擊復(fù)選框時(shí)才會(huì)選中節(jié)點(diǎn)。boolean

第二版修改

在之前的基礎(chǔ)上進(jìn)行了優(yōu)化,增加了刪除的功能,

 原來的刪除中,數(shù)組件不會(huì)跟隨修改,這次優(yōu)化后,使組件功能更加完善。

思路:

通過刪除已選模塊時(shí)觸發(fā)的方法,對(duì)樹組件中數(shù)據(jù)選擇情況進(jìn)行重新修改渲染,觸發(fā)清空時(shí),將已選數(shù)據(jù)置空,并且把樹組件中已選項(xiàng)全部修改為未選。

涉及內(nèi)容:

getCheckedNodes若節(jié)點(diǎn)可被選擇(即 show-checkbox 為 true),則返回目前被選中的節(jié)點(diǎn)所組成的數(shù)組(leafOnly, includeHalfChecked) 接收兩個(gè) boolean 類型的參數(shù),1. 是否只是葉子節(jié)點(diǎn),默認(rèn)值為 false 2. 是否包含半選節(jié)點(diǎn),默認(rèn)值為 false
setCheckedNodes設(shè)置目前勾選的節(jié)點(diǎn),使用此方法必須設(shè)置 node-key 屬性(nodes) 接收勾選節(jié)點(diǎn)數(shù)據(jù)的數(shù)組
node-key每個(gè)樹節(jié)點(diǎn)用來作為唯一標(biāo)識(shí)的屬性,整棵樹應(yīng)該是唯一的String
remove-tag多選模式下移除tag時(shí)觸發(fā)移除的tag值
clear可清空的單選模式下用戶點(diǎn)擊清空按鈕時(shí)觸發(fā)
collapse-tags多選時(shí)是否將選中值按文字的形式展示boolean

設(shè)置collapse-tags后,展示效果:

上圖箭頭所指向的模塊是通過getCheckedNodes獲取到的列表中的第一個(gè)元素,所以上面刪除方法中使用了splice(0,1)來進(jìn)行刪除。

總結(jié)

到此這篇關(guān)于el-select與el-tree結(jié)合使用實(shí)現(xiàn)樹形結(jié)構(gòu)多選框的文章就介紹到這了,更多相關(guān)el-select el-tree樹形結(jié)構(gòu)多選框內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue項(xiàng)目中swiper輪播active圖片實(shí)現(xiàn)居中并放大

    vue項(xiàng)目中swiper輪播active圖片實(shí)現(xiàn)居中并放大

    這篇文章主要介紹了vue項(xiàng)目中swiper輪播active圖片實(shí)現(xiàn)居中并放大方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue v2.5 調(diào)整和更新不完全問題

    Vue v2.5 調(diào)整和更新不完全問題

    這篇文章主要介紹了Vue v2.5 調(diào)整和更新不完全問題的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • vue路由跳轉(zhuǎn)router-link清除歷史記錄的三種方式(總結(jié))

    vue路由跳轉(zhuǎn)router-link清除歷史記錄的三種方式(總結(jié))

    這篇文章主要介紹了vue路由跳轉(zhuǎn)router-link清除歷史記錄的三種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 前端vue按1920*1080設(shè)計(jì)圖的頁面適配屏幕縮放并適配4K屏詳解

    前端vue按1920*1080設(shè)計(jì)圖的頁面適配屏幕縮放并適配4K屏詳解

    最近在做一個(gè)數(shù)據(jù)可視化的項(xiàng)目,整個(gè)項(xiàng)目全是大屏展示,期間也是遇到很多問題,最令人頭疼的就是大屏的適配,下面這篇文章主要給大家介紹了前端vue按1920*1080設(shè)計(jì)圖的頁面適配屏幕縮放并適配4K屏的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • 腳手架(vue-cli)創(chuàng)建Vue項(xiàng)目的超詳細(xì)過程記錄

    腳手架(vue-cli)創(chuàng)建Vue項(xiàng)目的超詳細(xì)過程記錄

    用vue-cli腳手架可以快速的構(gòu)建出一個(gè)前端vue框架的項(xiàng)目結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于腳手架(vue-cli)創(chuàng)建Vue項(xiàng)目的超詳細(xì)過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • vue2.x background:url()的踩坑記錄

    vue2.x background:url()的踩坑記錄

    這篇文章主要介紹了vue2.x background:url()的踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 在Vue3.x中實(shí)現(xiàn)類似React.lazy效果的方法詳解

    在Vue3.x中實(shí)現(xiàn)類似React.lazy效果的方法詳解

    React 的 React.lazy 功能為組件懶加載提供了原生支持,允許開發(fā)者將組件渲染推遲到實(shí)際需要時(shí)再進(jìn)行,雖然 Vue3.x 沒有一個(gè)直接對(duì)應(yīng)的 lazy 函數(shù),但我們可以通過動(dòng)態(tài)導(dǎo)入和 defineAsyncComponent 方法來實(shí)現(xiàn)類似的效果,需要的朋友可以參考下
    2024-03-03
  • Vue中 axios delete請(qǐng)求參數(shù)操作

    Vue中 axios delete請(qǐng)求參數(shù)操作

    這篇文章主要介紹了Vue中 axios delete請(qǐng)求參數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所 幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue?雙向綁定問題$emit無效的解決

    vue?雙向綁定問題$emit無效的解決

    這篇文章主要介紹了vue?雙向綁定問題$emit無效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 解決vue2.x中數(shù)據(jù)渲染以及vuex緩存的問題

    解決vue2.x中數(shù)據(jù)渲染以及vuex緩存的問題

    本篇文章主要介紹了vue2.x中請(qǐng)求之前數(shù)據(jù)顯示以及vuex緩存的問題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評(píng)論