亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue怎么實現下拉框雙向聯動效果

發布時間:2022-04-02 10:50:08 來源:億速云 閱讀:368 作者:iii 欄目:開發技術

今天小編給大家分享一下Vue怎么實現下拉框雙向聯動效果的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一、前言

在開發前端頁面的時候,常常需要寫下拉框,普通常見的下拉框有在頁面寫死固定值的下拉框,有通過調用后臺接口服務而獲取的值列表等。無論是原始的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  @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  @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怎么實現下拉框雙向聯動效果”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

周至县| 宿州市| 偏关县| 罗平县| 信宜市| 柘荣县| 南宁市| 方城县| 惠安县| 漳浦县| 海宁市| 辽阳县| 逊克县| 宜城市| 淳化县| 西丰县| 临安市| 芦山县| 中卫市| 霍林郭勒市| 崇信县| 乌苏市| 额济纳旗| 惠州市| 古蔺县| 丘北县| 湟中县| 墨玉县| 鄂温| 鹤庆县| 东至县| 买车| 日喀则市| 即墨市| 滦平县| 旬邑县| 公主岭市| 镇安县| 宁城县| 合阳县| 塘沽区|