<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在開發前端頁面的時候,常常需要寫下拉框,普通常見的下拉框有在頁面寫死固定值的下拉框,有通過呼叫後臺介面服務而獲取的值列表等。無論是原始的jsp頁面html頁面等,還是現在流行的vue angluar.js等,邏輯都是一樣。本文講解VUE頁面中,多個下拉框如何實現雙向聯動效果。
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的資料list集
data() { return { ListA: [], ListB: [], }
2.3 在methods: 方法區定義下拉框選項載入從後臺介面服務獲取的方法。getAMethod用來載入A選項的下拉框內容。getBMethod用來載入B選項的下拉框內容。
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, } ) } } }) },
上述步驟僅完成基本的框架搭建,也就是說後臺和前端的資料集合裝載以及介面服務呼叫用以獲取資料集合等。
2.4 實現聯動,大家都知道在vue的頁面中,想要實現多個<el-select 下拉框的值動態改變,必須要呼叫@change 函數。也就是圖1中已經標註的:
@change="changeAList($event) 和 @change="changeBList($event)
通過這2個方法即可實現兩個下拉框的雙向聯動效果。
同樣在methods:方法區定義方法:
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 } } }
以上方法即可實現選項A和選項B兩個下拉框的雙向聯動。但是有個小缺陷,必須要輸入字元后才能載入出來資料。
這是因為沒有在頁面建立的時候,就把後臺的資料load出來,實現這個效果也很簡單,只需要在created模組中呼叫兩個載入後臺介面服務的方法即可,如下:
created() { ... this.getAMethod(this.temp); this.getBMethod(this.temp); ... },
到此這篇關於Vue下拉框雙向聯動的文章就介紹到這了,更多相關Vue下拉框雙向聯動內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45