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為名稱,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)文章
如何用electron把vue項(xiàng)目打包為桌面應(yīng)用exe文件
這篇文章主要介紹了如何用electron把vue項(xiàng)目打包為桌面應(yīng)用exe文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05解決el-upload批量上傳只執(zhí)行一次成功回調(diào)on-success的問(wèn)題
這篇文章主要介紹了解決el-upload批量上傳只執(zhí)行一次成功回調(diào)on-success的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03vue在App.vue文件中監(jiān)聽(tīng)路由變化刷新頁(yè)面操作
這篇文章主要介紹了vue在App.vue文件中監(jiān)聽(tīng)路由變化刷新頁(yè)面操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Vue Element前端應(yīng)用開(kāi)發(fā)之常規(guī)Element界面組件
在我們開(kāi)發(fā)BS頁(yè)面的時(shí)候,往往需要了解常規(guī)界面組件的使用,小到最普通的單文本輸入框、多文本框、下拉列表,以及按鈕、圖片展示、彈出對(duì)話框、表單處理、條碼二維碼等等,本篇隨筆基于普通表格業(yè)務(wù)的展示錄入的場(chǎng)景介紹這些常規(guī)Element組件的使用2021-05-05ElementUI 修改默認(rèn)樣式的幾種辦法(小結(jié))
這篇文章主要介紹了ElementUI 修改默認(rèn)樣式的幾種辦法(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07前端項(xiàng)目vue3/React如何使用pako庫(kù)解壓縮后端返回gzip數(shù)據(jù)
pako是一個(gè)流行的JS庫(kù),用于在瀏覽器中進(jìn)行數(shù)據(jù)壓縮和解壓縮操作,它提供了對(duì)常見(jiàn)的壓縮算法的實(shí)現(xiàn),使開(kāi)發(fā)者能夠在客戶端上輕松進(jìn)行數(shù)據(jù)壓縮和解壓縮,這篇文章主要介紹了前端項(xiàng)目vue3/React使用pako庫(kù)解壓縮后端返回gzip數(shù)據(jù),需要的朋友可以參考下2024-07-07