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

vue使用el-select下拉框匹配不到值的問題及解決

 更新時間:2023年05月20日 10:51:51   作者:鐵錘妹妹@  
這篇文章主要介紹了vue使用el-select下拉框匹配不到值的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

使用el-select下拉框匹配不到值的問題

問題描述

點擊編輯彈窗里從上面列表行數(shù)據(jù)里取到的乙方名稱變成了乙方id15,產(chǎn)生的原因是因為彈窗里的甲乙方列表是從接口請求來的,比如后期某個乙方公司關(guān)停了,這條數(shù)據(jù)就會被刪除,導(dǎo)致我們?nèi)〔坏竭@條數(shù)據(jù)

查看接口返回的列表,發(fā)現(xiàn)少了行數(shù)據(jù)中的乙方這條數(shù)據(jù)

解決思路

1.findIndex() 返回值判斷編輯當(dāng)前行數(shù)據(jù)取到的id和甲乙方列表里的id是否有一樣的; 如果有相同id的話,返回第一個符合條件的數(shù)組成員位置,都不符合條件,則返回 -1

2.如果返回數(shù)組成員位置 < 0 的話,從列表行數(shù)據(jù)取id和name值,創(chuàng)建一條被刪除這條數(shù)據(jù)的新對象;push進(jìn)數(shù)組的最后一條,這樣就不存在id取不到的情況了

解決方法

 <el-form-item v-if="showPartner === '1'" label="甲方">
        <el-select v-model="partnerForm.partner_id_a" filterable>
          <el-option
            v-for="(val, key) in partnerAList"
            :key="key"
            :label="val.partner_name"
            :value="val.id"
          />
        </el-select>
      </el-form-item>
      <el-form-item v-if="showPartner === '1'" label="乙方">
        <el-select v-model="partnerForm.partner_id_b" filterable>
          <el-option
            v-for="(val, key) in partnerBList"
            :key="key"
            :label="val.partner_name"
            :value="val.id"
          />
        </el-select>
      </el-form-item>
setup(props, { emit }) {
    const partnerAList = ref<any[]>([])
    const partnerBList = ref<any[]>([])
    const showPartner = ref<string>('0')
    const dataMap = reactive({
      partnerForm: {
        phone: '',
        partner_id_a: '0',
        partner_id_b: '0',
        username: '',
        remark: '',
        status: ''
      }
    })
    const { onSubmit, close, formNode, subLoading } = useForm({ type: props.type, emit: emit, editApi: partnerApi['EDITPARTNERUSER'], addApi: partnerApi['ADDPARTNERUSER'], form: dataMap.partnerForm }) 
    function getPartnerAList() {
      partnerApi['GETPARTNERALIST']().then((res: any) => {
        if (res.data.code === '20000') {
          partnerAList.value = res.data.data
          var tempObj = { id: '0', partner_name: '請選擇' }
          partnerAList.value.unshift(tempObj)
          const temp = res.data.data.findIndex((item:any) => {
            return item.id === props.info['partner_id_a']
          })
          if (temp < 0) {
            const presentObj = { id: props.info['partner_id_a'], partner_name: props.info['party_a_name'] }
            partnerAList.value.push(presentObj)
          }
        }
      })
    }
    function getPartnerBList() {
      partnerApi['GETPARTNERBLIST']().then((res: any) => {
        if (res.data.code === '20000') {
          partnerBList.value = res.data.data
          var tempObj = { id: '0', partner_name: '請選擇' }
          partnerBList.value.unshift(tempObj)
          const temp = res.data.data.findIndex((item:any) => {
            return item.id === props.info['partner_id_b']
          })
          if (temp < 0) {
            const presentObj = { id: props.info['partner_id_b'], partner_name: props.info['party_b_name'] }
            partnerBList.value.push(presentObj)
          }
        }
      })
    }
    onMounted(() => {
      getPartnerAList()
      getPartnerBList()
    })
    return {
      formNode,
      ...toRefs(dataMap),
      partnerFormRules,
      onSubmit,
      close,
      subLoading,
      partnerAList,
      partnerBList,
      showPartner,
      onSubmitForm
    }
  }

el-select下拉框,選擇后賦值成功,但是框上不顯示選中的值的解決

最近在做項目時發(fā)現(xiàn)el-select下拉框,選擇后賦值成功,但是框上不顯示選中的值。

后來查了下官方文檔之后發(fā)現(xiàn)原因:

vue 無法監(jiān)聽動態(tài)新增的屬性的變化,需要用 $set 來為這些屬性賦值。

如上圖所示,操作人下拉框初始沒有值,選擇了操作班組之后,根據(jù)所選的班組去獲取后臺數(shù)據(jù)填充操作人下拉框。

然后就發(fā)現(xiàn)了問題:選擇了操作人之后輸入框還是沒有值,但是綁定的@change事件currOperatorChange 打印出了選中的值。

解決方法:用 $set 來賦值

如下所示:

<el-row>
              <el-col :span="12">
                <el-form-item prop="deptId"
                              :label="$t('taskManage.lockTask.deptId')+':'">
                  <treeselect :placeholder="$t('taskManage.lockTask.selDeptId')"
                              :options="deptTree"
                              :normalizer="normalizer"
                              v-model="formData.deptId"
                              @select="selectDepart">
                  </treeselect>
                </el-form-item>
              </el-col>
              <el-col :span="12">
                <el-form-item prop="operateId"
                              :label="$t('taskManage.lockTask.table.operateName')+':'">
                  <el-select clearable
                             v-model="formData.operateId"
                             @change="currOperatorChange"
                             :placeholder="$t('taskManage.lockTask.selOperateName')">
                    <el-option v-for="item in operateOption"
                               :key="item.value"
                               :label="item.label"
                               :value="item.value">
                    </el-option>
                  </el-select>
                </el-form-item>
              </el-col>
            </el-row>
// 操作人選中項發(fā)生變化
    currOperatorChange(val) {
      console.log('操作人選中項發(fā)生變化', val)
      if (val) {
        let obj = {}
        obj = this.operateOption.find(item => {
          //這里的operateOption就是上面遍歷的數(shù)據(jù)源
          return item.value === val //篩選出匹配數(shù)據(jù)
        })
        this.$set(this.formData, this.formData.operateId, val.value)
        this.formData.operateName = obj.label
        console.log('修改操作人名稱', obj.label, obj.value)
      } else {
        this.formData.operateName = ''
        this.$set(this.formData, this.formData.operateId, '')
      }
    }

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue折疊面板組件的封裝

    Vue折疊面板組件的封裝

    這篇文章主要為大家詳細(xì)介紹了Vue折疊面板組件的封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 深入理解Vue transition源碼分析

    深入理解Vue transition源碼分析

    本篇文章主要介紹了深入理解Vue transition源碼分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Vue中如何定義數(shù)據(jù)示例詳解

    Vue中如何定義數(shù)據(jù)示例詳解

    這篇文章主要給大家介紹了關(guān)于Vue中如何定義數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • vue+elementUI面包屑組件封裝方法詳解

    vue+elementUI面包屑組件封裝方法詳解

    這篇文章主要為大家詳細(xì)介紹了vue+elementUI面包屑組件封裝方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue?Router解決多路由復(fù)用同一組件頁面不刷新問題(場景分析)

    Vue?Router解決多路由復(fù)用同一組件頁面不刷新問題(場景分析)

    這篇文章主要介紹了Vue?Router解決多路由復(fù)用同一組件頁面不刷新問題,多路由復(fù)用同一組件的場景分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • vue接入下載文件接口問題

    vue接入下載文件接口問題

    這篇文章主要介紹了vue接入下載文件接口問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Vue腳手架搭建及創(chuàng)建Vue項目流程的詳細(xì)教程

    Vue腳手架搭建及創(chuàng)建Vue項目流程的詳細(xì)教程

    Vue腳手架指的是vue-cli,它是一個快速構(gòu)建**單頁面應(yīng)用程序(SPA)**環(huán)境配置的工具,cli是(command-line-interfac)命令行界面,下面這篇文章主要給大家介紹了關(guān)于Vue腳手架搭建及創(chuàng)建Vue項目流程的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 淺談vuex之mutation和action的基本使用

    淺談vuex之mutation和action的基本使用

    本篇文章主要介紹了淺談vuex之mutation和action的基本使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • Vue中component標(biāo)簽解決項目組件化操作

    Vue中component標(biāo)簽解決項目組件化操作

    這篇文章主要介紹了Vue中component標(biāo)簽解決項目組件化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 一篇文章總結(jié)Vue3.2語法糖使用

    一篇文章總結(jié)Vue3.2語法糖使用

    Vue3.2(21年8月10日)相比于Vue3新增了語法糖,減少了代碼冗余,下面這篇文章主要給大家介紹了關(guān)于Vue3.2語法糖使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11

最新評論

和硕县| 平遥县| 布尔津县| 奇台县| 闸北区| 喀喇沁旗| 岑溪市| 蒙城县| 康乐县| 上林县| 咸阳市| 黄浦区| 大同县| 鲜城| 桂平市| 苏尼特右旗| 汤原县| 建瓯市| 旌德县| 灵台县| 合水县| 阳东县| 水富县| 阿尔山市| 喀喇| 得荣县| 安泽县| 湘潭县| 亳州市| 武乡县| 靖州| 绥宁县| 凤山县| 千阳县| 大竹县| 芦山县| 光山县| 项城市| 齐河县| 红河县| 宁化县|