Vue下拉框雙向聯(lián)動(dòng)效果的示例代碼
一、前言
在開(kāi)發(fā)前端頁(yè)面的時(shí)候,常常需要寫下拉框,普通常見(jiàn)的下拉框有在頁(yè)面寫死固定值的下拉框,有通過(guò)調(diào)用后臺(tái)接口服務(wù)而獲取的值列表等。無(wú)論是原始的jsp頁(yè)面html頁(yè)面等,還是現(xiàn)在流行的vue angluar.js等,邏輯都是一樣。本文講解VUE頁(yè)面中,多個(gè)下拉框如何實(shí)現(xiàn)雙向聯(lián)動(dòng)效果。
二、代碼示例
2.1 在vue頁(yè)面的<el-form 表單里填充兩個(gè)<el-col :span="12">選項(xiàng),分別為選項(xiàng)A和選項(xiàng)B,如下所示:
<el-col :span="12"> <el-form-item label="選項(xiàng)A" prop="A"> <el-select style="width: 100%;" @change="changeAList($event)" v-model="temp.A" filterable remote clearable placeholder="請(qǐng)選擇" :remote-method="getAMethod" :loading="loading"> <el-option v-for="item in ListA" :key="item.value" :label="item.value" :value="item.label"> </el-option> </el-select> </el-form-item> </el-col> <el-col :md="12" > <el-form-item label="選項(xiàng)B" prop="B"> <el-select style="width: 100%;" @change="changeBList($event)" v-model="temp.B" filterable remote clearable placeholder="請(qǐng)選擇" :remote-method="getBMethod" :loading="loading"> <el-option v-for="item in ListB" :key="item.value" :label="item.value" :value="item.label"> </el-option> </el-select> </el-form-item> </el-col>
2.2 在data的return模塊定義兩個(gè)list集合,用于裝載選項(xiàng)A和選項(xiàng)B的數(shù)據(jù)list集
data() { return { ListA: [], ListB: [], }
2.3 在methods: 方法區(qū)定義下拉框選項(xiàng)加載從后臺(tái)接口服務(wù)獲取的方法。getAMethod用來(lái)加載A選項(xiàng)的下拉框內(nèi)容。getBMethod用來(lái)加載B選項(xiàng)的下拉框內(nèi)容。
getAMethod(temp) { XXAPI.getAValue(temp) .then(response => { if(response.data && response.status == 200){ this.ListA= [] var result = response.data.data.XX let jsonObj = JSON.parse(result); for (let k of Object.keys(jsonObj)) { this.ListA.push( { label: k, value: jsonObj[k].屬性A, } ) } } }) }, getBMethod(temp) { XXAPI.getDicValue2(temp) .then(response => { if(response.data && response.status == 200){ this.ListB = [] var result = response.data.data.XX let jsonObj = JSON.parse(result); for (let k of Object.keys(jsonObj)) { this.ListB .push( { label: k, value: jsonObj[k].屬性B, } ) } } }) },
上述步驟僅完成基本的框架搭建,也就是說(shuō)后臺(tái)和前端的數(shù)據(jù)集合裝載以及接口服務(wù)調(diào)用用以獲取數(shù)據(jù)集合等。
2.4 實(shí)現(xiàn)聯(lián)動(dòng),大家都知道在vue的頁(yè)面中,想要實(shí)現(xiàn)多個(gè)<el-select 下拉框的值動(dòng)態(tài)改變,必須要調(diào)用@change 函數(shù)。也就是圖1中已經(jīng)標(biāo)注的:
@change="changeAList($event) 和?@change="changeBList($event)
通過(guò)這2個(gè)方法即可實(shí)現(xiàn)兩個(gè)下拉框的雙向聯(lián)動(dòng)效果。
同樣在methods:方法區(qū)定義方法:
changeBList(e){ this.indexSelectB(e) }, changeAList(e){ this.indexSelectA(e) }, indexSelectB(e){ if(this.ListA == undefined || this.ListA .length <= 0){ this.getAMethod(this.temp); } let i = 0; for (i = 0;i<this.ListA .length;i++) { if (this.ListA [i].label == e){ this.temp.A= this.ListA [i].value; break } } }, indexSelectA(e){ if(this.ListB == undefined || this.ListB.length <= 0){ this.getBMethod(this.temp); } let i = 0; for (i = 0;i<this.ListB.length;i++) { if (this.ListB[i].label == e){ this.temp.B= this.ListB[i].value; break } } }
以上方法即可實(shí)現(xiàn)選項(xiàng)A和選項(xiàng)B兩個(gè)下拉框的雙向聯(lián)動(dòng)。但是有個(gè)小缺陷,必須要輸入字符后才能加載出來(lái)數(shù)據(jù)。
這是因?yàn)闆](méi)有在頁(yè)面創(chuàng)建的時(shí)候,就把后臺(tái)的數(shù)據(jù)load出來(lái),實(shí)現(xiàn)這個(gè)效果也很簡(jiǎn)單,只需要在created模塊中調(diào)用兩個(gè)加載后臺(tái)接口服務(wù)的方法即可,如下:
created() { ... this.getAMethod(this.temp); this.getBMethod(this.temp); ... },
到此這篇關(guān)于Vue下拉框雙向聯(lián)動(dòng)的文章就介紹到這了,更多相關(guān)Vue下拉框雙向聯(lián)動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue狀態(tài)機(jī)的開(kāi)啟與停止操作詳細(xì)講解
Vuex是專門為Vuejs應(yīng)用程序設(shè)計(jì)的狀態(tài)管理工具,這篇文章主要給大家介紹了關(guān)于Vuex狀態(tài)機(jī)快速了解與實(shí)例應(yīng)用的相關(guān)資料,需要的朋友可以參考下2023-01-01vue使用vant中的checkbox實(shí)現(xiàn)全選功能
這篇文章主要為大家詳細(xì)介紹了vue使用vant中的checkbox實(shí)現(xiàn)全選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11記一次Vue.js混入mixin的使用(分權(quán)限管理頁(yè)面)
這篇文章主要介紹了記一次Vue.js混入mixin的使用(分權(quán)限管理頁(yè)面),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04Vuex實(shí)現(xiàn)數(shù)據(jù)增加和刪除功能
今天小編就為大家分享一篇Vuex實(shí)現(xiàn)數(shù)據(jù)增加和刪除功能,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11vue3.x項(xiàng)目降級(jí)到vue2.7的解決方案
Vue2.7是Vue2.x的最終次要版本,下面這篇文章主要給大家介紹了關(guān)于vue3.x項(xiàng)目降級(jí)到vue2.7的解決方案,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03