ElementUI下拉組件el-select一次從后端獲取選項(xiàng)并設(shè)置默認(rèn)值方式
ElementUI el-select一次從后端獲取選項(xiàng)并設(shè)置默認(rèn)值
使用ElementUI下拉框組件el-select時(shí)遇到一個(gè)問(wèn)題,期望從后端獲取選項(xiàng)并設(shè)置默認(rèn)值,其中選項(xiàng)的label為名稱(chēng),value為id,但是默認(rèn)值顯示出來(lái)的是value而非label。
前端代碼大致如下:
<el-select style="width: 130px" v-model="extraAttr.value_id" placeholder="請(qǐng)選擇屬性值" @change="handleSelectAttrValue(extraAttr)" @clear="handleClearAttrValue(extraAttr)" filterable clearable> ? ? <el-option v-for="(item, index5) in getValues(extraAttr.attribute_id)" :key="index5" :label="item.value" :value="item.value_id"></el-option> ?</el-select>
computed: {
? ? // 按屬性id獲取屬性取值選項(xiàng)
? ? getValues() {
? ? ? ? return function (index) {
? ? ? ? ? ? let nullValues = [];
? ? ? ? ? ? if (this.attrValueMap.has(index)) {
? ? ? ? ? ? ? ? return this.attrValueMap.get(index);
? ? ? ? ? ? }
? ? ? ? ? ? return nullValues;
? ? ? ? }
? ? },
? ? ...
}其中,el-select綁定屬性值id,在created階段通過(guò)post請(qǐng)求去后端請(qǐng)求所有屬性及屬性值的信息并緩存到attrValueMap(因?yàn)榍短琢巳龑友h(huán)…每一層選擇一個(gè)值就要同步更改下拉選項(xiàng)),然后在編輯頁(yè)就有了默認(rèn)值;el-option通過(guò)給computed計(jì)算屬性傳參從attrValueMap中用屬性id獲取屬性值數(shù)組。
我的解決方案
給el-select動(dòng)態(tài)綁定disabled屬性
這里我的理解是
value_id、傳遞給計(jì)算屬性的參數(shù)attribute_id和attrValueMap都不變,所以并不能觸發(fā)重新渲染,那只能更改其他地方去觸發(fā)重新渲染。
<el-select style="width: 130px" v-model="extraAttr.value_id" placeholder="請(qǐng)選擇屬性值" @change="handleSelectAttrValue(extraAttr)" @clear="handleClearAttrValue(extraAttr)" filterable clearable :disabled="isAttributeDisabled"> ? ? <el-option v-for="(item, index5) in getValues(extraAttr.attribute_id)" :key="index5" :label="item.value" :value="item.value_id"></el-option> </el-select>
通過(guò):disabled="isAttributeDisabled"綁定isAttributeDisabled,初始時(shí)設(shè)置為true,在created階段post請(qǐng)求結(jié)束時(shí)更新為false,這樣就會(huì)觸發(fā)重新渲染el-select組件
ElementUI Select設(shè)置默認(rèn)值更改選擇后值不改變
使用 ElementUI 的 Select 選擇器選擇了其他選擇值,框內(nèi)的值沒(méi)有改變,還是顯示原來(lái)的值,但是綁定的id值變了
解決方案:在選擇器的值發(fā)生改變時(shí)刷新選擇器組件:@change=“$forceUpdate()”
<el-select ? v-model="Value" ? placeholder="請(qǐng)選擇" ? @change="$forceUpdate()" > ? <el-option ? ? v-for="item in List" ? ? :key="item.id" ? ? :label="item.name" ? ? :value="item.id" ? /> </el-select>
注意:
我查找了下綁定值沒(méi)變的原因是因?yàn)槲医壎ǖ膙alue值在data中沒(méi)有定義才會(huì)出現(xiàn)這種問(wèn)題,如果綁定的是對(duì)象的話,比如綁定的是obj.value,并且data中已經(jīng)定義了,還出現(xiàn)了綁定值不變的情況,說(shuō)明在代碼編輯的過(guò)程中把obj重新賦值了,賦的值中沒(méi)有value屬性,也就是說(shuō)把value屬性給干掉了,所以會(huì)出現(xiàn)綁定值不變的情況,所以要做的就是在代碼中把value屬性加上就可以了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Vue+EleMentUI實(shí)現(xiàn)el-table-colum表格select下拉框可編輯功能實(shí)例
- 關(guān)于elementUI select控件綁定多個(gè)值(對(duì)象)
- elementui的select實(shí)現(xiàn)多選添加功能
- vue之elementUi的el-select同時(shí)獲取value和label的三種方式
- elementui?el-select?change事件傳參問(wèn)題
- elementUI動(dòng)態(tài)表單?+?el-select?按要求禁用問(wèn)題
- ElementUI?select彈窗在特定場(chǎng)合錯(cuò)位問(wèn)題解決方案
相關(guān)文章
Vue3配置vite.config.js解決跨域問(wèn)題的方法
跨域一般出現(xiàn)在開(kāi)發(fā)階段,由于線上環(huán)境前端代碼被打包成了靜態(tài)資源,因而不會(huì)出現(xiàn)跨域問(wèn)題,這篇文章主要給大家介紹了關(guān)于Vue3配置vite.config.js解決跨域問(wèn)題的相關(guān)資料,需要的朋友可以參考下2024-07-07
vue-cli3.x配置全局的scss的時(shí)候報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了vue-cli3.x配置全局的scss的時(shí)候報(bào)錯(cuò)問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
setup+ref+reactive實(shí)現(xiàn)vue3響應(yīng)式功能
這篇文章介紹了通過(guò)setup+ref+reactive實(shí)現(xiàn)vue3響應(yīng)式功能,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-11-11
vue-cli構(gòu)建vue項(xiàng)目的步驟詳解
這篇文章主要介紹了vue-cli構(gòu)建vue項(xiàng)目的步驟詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
vue中如何使用embed標(biāo)簽PDF預(yù)覽
這篇文章主要介紹了vue中如何使用embed標(biāo)簽PDF預(yù)覽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
vue項(xiàng)目前端知識(shí)點(diǎn)整理【收藏】
本文是小編給大家收藏整理的關(guān)于vue項(xiàng)目前端知識(shí)點(diǎn),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
el-table表頭添加勾選框的實(shí)現(xiàn)示例
本文主要介紹了el-table表頭添加勾選框的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

