vue的el-select綁定的值無(wú)法選中el-option問(wèn)題及解決
el-select綁定的值無(wú)法選中el-option問(wèn)題
框架vue-element-ui中的select綁定值v-model無(wú)法自動(dòng)選中option的問(wèn)題
代碼如下:
<template> ?<el-select v-model="formData.colorId" placeholder="選擇"> ? ?<el-option ? ? ?v-for="item in colorOptions" ? ? ?:key="item.id" ? ? ?:label="item.name" ? ? ?:value="item.id"> ? ?</el-option> ?</el-select> <template>
<script> colors = { ?"1": "黃", ?"2": "紅", ?"3": "綠" } export default { ? data() { ? ?? ?return { ? ?? ??? ?formData:{ colorId: 2 }, ? ?? ??? ?colorOptions: obj2Array(colors) ?? ?} ? } } function obj2Array(obj){ ? const arr = [] ? for(let key in obj){ ? ? arr.push({id:key, name: obj[key]}) ? } ? return arr } </script>
發(fā)現(xiàn)無(wú)法自動(dòng)選中紅色,而是直接顯示2,這是什么問(wèn)題呢。
原來(lái)是obj2Array這個(gè)方法的問(wèn)題,在重構(gòu)為數(shù)組時(shí),key是字符直接給到id,而colorId是數(shù)值,所以無(wú)法匹配。
正解:
function obj2Array(obj){ ? const arr = [] ? for(let key in obj){ ? ? arr.push({id:Number(key), name: obj[key]}) ? } ? return arr }
vue el-select 2個(gè)下拉框聯(lián)動(dòng)時(shí)產(chǎn)生的無(wú)法選中值的bug
問(wèn)題描述
做項(xiàng)目時(shí)用了2個(gè)el-select下拉框,一個(gè)下拉框選擇學(xué)校,一個(gè)下拉框選擇專業(yè),專業(yè)的數(shù)據(jù)源是根據(jù)學(xué)校的選擇來(lái)動(dòng)態(tài)改變的,由于后臺(tái)沒(méi)有寫(xiě)成樹(shù)的形式,所以寫(xiě)了2個(gè)下拉框進(jìn)行聯(lián)動(dòng)。
這里就有一個(gè)問(wèn)題:學(xué)校改變后,雖然專業(yè)的數(shù)據(jù)源發(fā)生了變化,但是原來(lái)的專業(yè)綁定值并沒(méi)有清空,所以我在此就手動(dòng)清空了專業(yè)的值。
這是就有了這個(gè)奇怪的問(wèn)題,學(xué)校改變后,原來(lái)的專業(yè)綁定值雖然清空了,但是卻無(wú)法選中了。
解決辦法1:使用 this.$set 來(lái)設(shè)置變量的值,讓視圖重新render
在學(xué)校的值改變時(shí),清空原專業(yè)值時(shí)用$set(),而不是直接賦值為空。
schoolChange (value) { ? ? // this.form.specialtyid='' ? ? this.$set(this.form, 'specialtyid', '') ? ?? ? ? if (!value) { ? ? ? this.specialtyList = [] ? ? } else { ? ? ? this.GetspecialtynList(value) ? ? } },
解決辦法2:直接聲明specialtyid變量
另一種解決辦法,就是將specialtyid的值,直接寫(xiě)到data里,el-select綁定值也直接使用specialtyid,而不是使用form.specialtyid,此時(shí)再清空specialtyid的值就可以直接賦值了
解決辦法3:給專業(yè)的el-select添加@change事件
? ? ? ? <el-select v-model="form.specialtyid" @change="specChange"> ? ? ? ? ? ? <el-option ? ? ? ? ? ? ? v-for="item in specialtyList" ? ? ? ? ? ? ? :label="item.orgname" ? ? ? ? ? ? ? :key="item.orgid" ? ? ? ? ? ? ? :value="item.orgid" ? ? ? ? ? ? ></el-option> ? ? ? ? </el-select> ? ?? ? ? ? ? specChange () { ? ? ? ? ? //強(qiáng)制刷新 ? ? ? ? ? this.$forceUpdate() ? ? ? ? },
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue+vuecli+webpack中使用mockjs模擬后端數(shù)據(jù)的示例
本篇文章主要介紹了vue+vuecli+webpack中使用mockjs模擬后端數(shù)據(jù)的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-10-10vue中transition動(dòng)畫(huà)使用(移動(dòng)端頁(yè)面切換左右滑動(dòng)效果)
這篇文章主要介紹了vue中transition動(dòng)畫(huà)使用(移動(dòng)端頁(yè)面切換左右滑動(dòng)效果),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07通用vue組件化展示列表數(shù)據(jù)實(shí)例詳解
組件化開(kāi)發(fā)能大幅提高應(yīng)用的開(kāi)發(fā)效率、測(cè)試性、復(fù)用性等,下面這篇文章主要給大家介紹了關(guān)于通用vue組件化展示列表數(shù)據(jù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06VUE3+TS遞歸組件實(shí)現(xiàn)TreeList設(shè)計(jì)實(shí)例詳解
這篇文章主要為大家介紹了VUE3+TS遞歸組件實(shí)現(xiàn)TreeList設(shè)計(jì)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-0935個(gè)最好用的Vue開(kāi)源庫(kù)(史上最全)
無(wú)論是開(kāi)發(fā)新手還是經(jīng)驗(yàn)豐富的老手,我們都喜歡開(kāi)源軟件包。本文主要介紹了35個(gè)最好用的Vue開(kāi)源庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01Element-ui中的Cascader級(jí)聯(lián)選擇器基礎(chǔ)用法
這篇文章主要為大家介紹了Element-ui中的Cascader級(jí)聯(lián)選擇器基礎(chǔ)用法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06