Vue下拉框雙向聯(lián)動效果的示例代碼
一、前言
在開發(fā)前端頁面的時候,常常需要寫下拉框,普通常見的下拉框有在頁面寫死固定值的下拉框,有通過調(diào)用后臺接口服務(wù)而獲取的值列表等。無論是原始的jsp頁面html頁面等,還是現(xiàn)在流行的vue angluar.js等,邏輯都是一樣。本文講解VUE頁面中,多個下拉框如何實現(xiàn)雙向聯(lián)動效果。
二、代碼示例
2.1 在vue頁面的<el-form 表單里填充兩個<el-col :span="12">選項,分別為選項A和選項B,如下所示:
<el-col :span="12">
<el-form-item label="選項A" prop="A">
<el-select style="width: 100%;" @change="changeAList($event)"
v-model="temp.A"
filterable
remote
clearable
placeholder="請選擇"
: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="選項B" prop="B">
<el-select style="width: 100%;" @change="changeBList($event)"
v-model="temp.B"
filterable
remote
clearable
placeholder="請選擇"
: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模塊定義兩個list集合,用于裝載選項A和選項B的數(shù)據(jù)list集
data() {
return {
ListA: [],
ListB: [],
}2.3 在methods: 方法區(qū)定義下拉框選項加載從后臺接口服務(wù)獲取的方法。getAMethod用來加載A選項的下拉框內(nèi)容。getBMethod用來加載B選項的下拉框內(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,
}
)
}
}
})
},上述步驟僅完成基本的框架搭建,也就是說后臺和前端的數(shù)據(jù)集合裝載以及接口服務(wù)調(diào)用用以獲取數(shù)據(jù)集合等。
2.4 實現(xiàn)聯(lián)動,大家都知道在vue的頁面中,想要實現(xiàn)多個<el-select 下拉框的值動態(tài)改變,必須要調(diào)用@change 函數(shù)。也就是圖1中已經(jīng)標注的:
@change="changeAList($event) 和?@change="changeBList($event)
通過這2個方法即可實現(xiàn)兩個下拉框的雙向聯(lián)動效果。
同樣在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
}
}
}以上方法即可實現(xiàn)選項A和選項B兩個下拉框的雙向聯(lián)動。但是有個小缺陷,必須要輸入字符后才能加載出來數(shù)據(jù)。
這是因為沒有在頁面創(chuàng)建的時候,就把后臺的數(shù)據(jù)load出來,實現(xiàn)這個效果也很簡單,只需要在created模塊中調(diào)用兩個加載后臺接口服務(wù)的方法即可,如下:
created() {
...
this.getAMethod(this.temp);
this.getBMethod(this.temp);
...
},到此這篇關(guān)于Vue下拉框雙向聯(lián)動的文章就介紹到這了,更多相關(guān)Vue下拉框雙向聯(lián)動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue使用vant中的checkbox實現(xiàn)全選功能
這篇文章主要為大家詳細介紹了vue使用vant中的checkbox實現(xiàn)全選功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-11-11
記一次Vue.js混入mixin的使用(分權(quán)限管理頁面)
這篇文章主要介紹了記一次Vue.js混入mixin的使用(分權(quán)限管理頁面),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04
Vuex實現(xiàn)數(shù)據(jù)增加和刪除功能
今天小編就為大家分享一篇Vuex實現(xiàn)數(shù)據(jù)增加和刪除功能,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11

