最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

el-select下拉選擇緩存的實(shí)現(xiàn)

 更新時(shí)間:2025年01月09日 15:47:30   作者:weixin_43939111  
本文主要介紹了在使用el-select實(shí)現(xiàn)下拉選擇緩存時(shí)遇到的問(wèn)題及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

項(xiàng)目場(chǎng)景:

在這里插入圖片描述

從左側(cè)列表中選取字段填入右側(cè)下拉多選框,用戶可以對(duì)右側(cè)已選字段模擬緩存:下拉顯示時(shí)展示已選字段列表,對(duì)選項(xiàng)選中或取消操作時(shí)下拉框展示選中與取消的字段;下拉隱藏時(shí),下拉框選項(xiàng)與右側(cè)遺留標(biāo)簽同步。

問(wèn)題描述

1、查閱資料,通過(guò)給el-select綁定@change方法可以監(jiān)聽到選中值的變換(只能獲取當(dāng)前已選中的所有值(array方式存儲(chǔ)),如果監(jiān)聽變化的是哪個(gè)值,需自定義變量緩存上一次存儲(chǔ)與當(dāng)前選中做對(duì)比)。
2、@visible-change監(jiān)聽下拉框的顯示與隱藏,會(huì)在顯示和隱藏時(shí)都觸發(fā)。
3、初始設(shè)想:刪除輸入框內(nèi)標(biāo)簽時(shí),直接將值返回到左側(cè)列表,下拉框選項(xiàng)數(shù)量更新;取消下拉框內(nèi)選擇時(shí),輸入框內(nèi)值刪除,下拉框內(nèi)選項(xiàng)數(shù)量保持不變,下拉隱藏時(shí)將取消選擇的值返回左側(cè)列表。
然而實(shí)際發(fā)現(xiàn):change方法無(wú)論是輸入框選項(xiàng)操作還是下拉框選項(xiàng)操作都會(huì)觸發(fā),無(wú)法區(qū)分在哪個(gè)區(qū)域操作。

解決方案:

改變?cè)O(shè)計(jì)思路:

  • 下拉框不顯示,添加與刪除項(xiàng)同步更新下拉選項(xiàng)
  • 下拉框顯示時(shí),下拉框緩存初始展示數(shù)據(jù)。在下拉框中取消選項(xiàng)同時(shí)數(shù)據(jù)項(xiàng)返回左側(cè)列表,重新選中時(shí)左側(cè)列表項(xiàng)刪除并移入下拉多選,隱藏時(shí)下拉框保持最新選中項(xiàng)存儲(chǔ)

關(guān)鍵代碼:

<template>
   <el-select :popper-append-to-body="false" class="hide_error" v-model="variables_columns" multiple @visible-change="hideOption" @change="turnOption" placeholder="請(qǐng)選擇" id="varia-col-select">
        <el-option
         v-for="item in checkedList"
         :key="item.value"
         :label="item.label"
         :value="item.value"
         >
      </el-option>
   </el-select>
</template>

js

export default {
	data(){
		return {
			variables_columns:[],
			optionVisible:false,//下拉框顯示狀態(tài),false為隱藏,true為顯示
			lastOperation:{data:[]},//上次選擇
			startOption:false,//判斷是否第一次打開下拉框
			tableData:[{id:0,name:"M1_GRAT"},{id:1,name:"M2_GRAT"},...],//模擬左側(cè)列表數(shù)據(jù)
		}
	},
	methods:{
		hideOption(){//隱藏時(shí)更新下拉選項(xiàng)
			this.optionVisible = !this.optionVisible;
			if(!this.optionVisible){
				this.checkList = this.checkList.filter(
					item => this.variables_columns.some(v => v==item.value)
				)
			}
		},
		turnOption(val){//緩存選項(xiàng)
			if(!this.startOption)this.lastOperation.data = this.checkList.map(item => item.value);
			this.startOperation = true;
			let item = [];
			if(this.optionVisable){//下拉框顯示時(shí)
				if(this.lastOperation.data.length>val.length){//取消選項(xiàng)操作
					item = this.lastOperatin.data.filter(v => !val.some(v1 => v1 == v));
					let backNode = {id:this.tableData.length,name:item[0]};//返回的元素
					this.tableData.push(backNode);
				}else{//在下拉框中重新選中
					let delNode = val.filter(v1 => !this.lastOperation.data.some(v2 => v1 == v2));
					this.tableData = this.tableData.filter(v => v.name != delNode[0])
				}
			} else { //下拉框不顯示,只有刪除選項(xiàng)時(shí)觸發(fā)
				item = this.checkedList.filter(v => !val.some(v1 => v1 == v.value));
				this.checkList = this.checkList.filter(v => val.some(v1 => v.value));
				let backNode = {id:this.tableData.length,name:item[0].value}
				this.tableData.push(backNode);
			}
			this.lastOperation.data = val;
		}
	},
	...
}

備注:①:popper-append-to-body="false"可將下拉框dom嵌入div中,方便調(diào)整多選下拉框樣式②multiple是el-select多選必須添加的屬性

到此這篇關(guān)于el-select下拉選擇緩存的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)el-select下拉選擇緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue2中vue-router引入使用詳解

    vue2中vue-router引入使用詳解

    Vue?Router?是?Vue?的官方路由,它與?Vue.js?核心深度集成,讓用?Vue.js?構(gòu)建單頁(yè)應(yīng)用變得輕而易舉,下面就跟隨小編一起學(xué)習(xí)一下vue-router的具體用法吧
    2023-12-12
  • Vue中directive的鉤子函數(shù)(bind,inserted等)用法及使用說(shuō)明

    Vue中directive的鉤子函數(shù)(bind,inserted等)用法及使用說(shuō)明

    Vue指令鉤子函數(shù)(bind、inserted等)用于在不同階段操作元素,bind綁定時(shí)初始化,inserted插入DOM后執(zhí)行,update值變化時(shí)觸發(fā),componentUpdated全部更新后調(diào)用,unbind解綁時(shí)清理,根據(jù)需求選擇對(duì)應(yīng)鉤子實(shí)現(xiàn)功能增強(qiáng)
    2025-07-07
  • Vite+Vue3項(xiàng)目版本更新檢查與頁(yè)面自動(dòng)刷新的實(shí)現(xiàn)方案

    Vite+Vue3項(xiàng)目版本更新檢查與頁(yè)面自動(dòng)刷新的實(shí)現(xiàn)方案

    使用 Vite 對(duì) Vue 項(xiàng)目進(jìn)行打包,對(duì) js 和 css 文件使用了 chunkhash 進(jìn)行了文件緩存控制,但是項(xiàng)目的 index.html 文件在版本頻繁迭代更新時(shí),會(huì)存在被瀏覽器緩存的情況,所以本文介紹了Vite+Vue3項(xiàng)目版本更新檢查與頁(yè)面自動(dòng)刷新方案,需要的朋友可以參考下
    2025-09-09
  • Vue實(shí)現(xiàn)二維碼的展示及下載功能

    Vue實(shí)現(xiàn)二維碼的展示及下載功能

    這篇文章主要介紹了Vue實(shí)現(xiàn)二維碼的展示及下載功能,其中downloadQRCode()函數(shù)中的url為要下載的文件的路徑,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Vue中進(jìn)行分布式鑒權(quán)與認(rèn)證的過(guò)程

    Vue中進(jìn)行分布式鑒權(quán)與認(rèn)證的過(guò)程

    在Vue應(yīng)用中,我們通常需要實(shí)現(xiàn)分布式鑒權(quán)和認(rèn)證,以確保用戶的安全性和數(shù)據(jù)的保密性,本文將介紹在Vue中如何進(jìn)行分布式鑒權(quán)與認(rèn)證,需要的朋友可以參考下
    2023-06-06
  • 深入探討Vue計(jì)算屬性與監(jiān)聽器的區(qū)別和用途

    深入探討Vue計(jì)算屬性與監(jiān)聽器的區(qū)別和用途

    在Vue的開發(fā)中,計(jì)算屬性(Computed Properties)和監(jiān)聽器(Watchers)是兩種非常重要的概念,它們都用于響應(yīng)式地處理數(shù)據(jù)變化,本文將帶你深入了解計(jì)算屬性和監(jiān)聽器的區(qū)別,以及在何時(shí)使用它們,感興趣的朋友可以參考下
    2023-09-09
  • vue實(shí)現(xiàn)tab標(biāo)簽(標(biāo)簽超出自動(dòng)滾動(dòng))

    vue實(shí)現(xiàn)tab標(biāo)簽(標(biāo)簽超出自動(dòng)滾動(dòng))

    當(dāng)創(chuàng)建的tab標(biāo)簽超出頁(yè)面可視區(qū)域時(shí)自動(dòng)滾動(dòng)一個(gè)tab標(biāo)簽距離,并可手動(dòng)點(diǎn)擊滾動(dòng)tab標(biāo)簽,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Vue.js實(shí)現(xiàn)一個(gè)SPA登錄頁(yè)面的過(guò)程【推薦】

    Vue.js實(shí)現(xiàn)一個(gè)SPA登錄頁(yè)面的過(guò)程【推薦】

    本篇文章主要介紹了Vue.js寫一個(gè)SPA登錄頁(yè)面過(guò)程的相關(guān)知識(shí),具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • 解決Vue大括號(hào)字符換行踩的坑

    解決Vue大括號(hào)字符換行踩的坑

    這篇文章主要介紹了解決Vue大括號(hào)字符換行踩的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • webStorm?debug?vue項(xiàng)目的兩種方案圖文詳解

    webStorm?debug?vue項(xiàng)目的兩種方案圖文詳解

    WebStorm作為一款功能強(qiáng)大的IDE,提供了豐富的調(diào)試功能和技巧,可以幫助你更高效地開發(fā)和調(diào)試Vue應(yīng)用,這篇文章主要給大家介紹了關(guān)于webStorm?debug?vue項(xiàng)目的兩種方案,需要的朋友可以參考下
    2024-07-07

最新評(píng)論

葫芦岛市| 嘉峪关市| 山阳县| 巴彦县| 邹平县| 静宁县| 湖南省| 贞丰县| 赤城县| 崇左市| 杨浦区| 苗栗市| 灵川县| 莎车县| 开原市| 潞西市| 建瓯市| 江孜县| 高要市| 嘉黎县| 尤溪县| 龙州县| 文昌市| 五华县| 西华县| 巫溪县| 陇西县| 嘉义县| 桓仁| 松江区| 庐江县| 名山县| 达日县| 柯坪县| 佛山市| 信阳市| 长沙县| 巴马| 兴安县| 承德县| 泾阳县|