vue數(shù)據(jù)字典取鍵值方式
vue數(shù)據(jù)字典取鍵值
首先:項(xiàng)目里的數(shù)據(jù)字典路由已經(jīng)配好
進(jìn)入項(xiàng)目頁(yè)面
引入數(shù)據(jù)字典
import { getTypeValue } from '@/api/dict/dictValue/index';
創(chuàng)建前獲取到字典
getTypeValue('org_attr_type').then(response => { this.attrTypeOptions = response.data.rows; });
設(shè)置el下拉框
注意上面的寫法是錯(cuò)誤的,注意:key,:label, :value值
搜索列表也顯示
vue項(xiàng)目的字典問題
我們?cè)陧?xiàng)目中經(jīng)常會(huì)遇到一個(gè)字典問題,就是一個(gè)從后臺(tái)獲取的一個(gè)固定的數(shù)組,然后在系統(tǒng)中的很多地方都會(huì)通過select選擇框用到。如果每次用的時(shí)候獲取,就會(huì)經(jīng)常出現(xiàn)兩個(gè)問題:
1.這個(gè)數(shù)組數(shù)據(jù)量過大的時(shí)候,有可能點(diǎn)擊select下拉框,數(shù)據(jù)還沒有返回來,導(dǎo)致select無法選擇;
2.每次都重新請(qǐng)求后臺(tái),當(dāng)數(shù)據(jù)量過大,且同一頁(yè)面其他接口也比較多時(shí),導(dǎo)致頁(yè)面加載緩慢。
那怎么解決呢?如下:
在utils中寫一個(gè)dict.js的文件
內(nèi)容如下:
//系統(tǒng)中封裝好的axios import { httpPost } from '@/utils/axios' export function getDict(obj) { ?? ?//這個(gè)dictList中的鍵名都是字典名稱,即傳入對(duì)應(yīng)名稱可獲取對(duì)應(yīng)list ? ? const dictList = { ? ? ? ? graduateSchool: [], ? ? ? ? major: [], ? ? ? ? topDegree: [], ? ? ? ? sex: [], ? ? ? ? title: [], ? ? ? ? workUnit: [], ? ? ? ? place: [], ? ? ? ? expertType: [], ? ? } ? ? for (let k in dictList) { ? ? ? ? httpPost('/sysdict/findByDictType', { dictType: `${k}` }) ? ? ? ? ? ? .then((res) => { ? ? ? ? ? ? ? ? obj[k] = res.data ? ? ? ? ? ? }) ? ? } }
在main.js中引用剛才封裝好的getDict方法
并對(duì)字典進(jìn)行全局聲明:
import { getDict } from "@/utils/dict.js" Vue.prototype.$dictObject = {} getDict(Vue.prototype.$dictObject)
之后我們就可以在系統(tǒng)中使用
“$dictObject.字典名” 來代替對(duì)應(yīng)的list了:
?<el-form-item label="專業(yè)" prop="majorId"> ? ? ? ? ? ? ? ?<el-select v-model="dataForm.majorId" placeholder="請(qǐng)選擇專業(yè)"> ? ? ? ? ? ? ? ? ? <el-option ? ? ? ? ? ? ? ? ? ? v-for="item in $dictObject.major" ? ? ? ? ? ? ? ? ? ? :key="item.id" ? ? ? ? ? ? ? ? ? ? :label="item.dictName" ? ? ? ? ? ? ? ? ? ? :value="item.id"> ? ? ? ? ? ? ? ? ? </el-option> ? ? ? ? ? ? ? ? </el-select> ? ? ? ? ? ? </el-form-item>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue-router 按需加載 component: () => import() 報(bào)錯(cuò)的解決
這篇文章主要介紹了vue-router 按需加載 component: () => import() 報(bào)錯(cuò)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09vue 解決移動(dòng)端彈出鍵盤導(dǎo)致頁(yè)面fixed布局錯(cuò)亂的問題
今天小編就為大家分享一篇vue 解決移動(dòng)端彈出鍵盤導(dǎo)致頁(yè)面fixed布局錯(cuò)亂的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11詳解vue-cli快速構(gòu)建vue應(yīng)用并實(shí)現(xiàn)webpack打包
這篇文章主要介紹了詳解vue-cli快速構(gòu)建vue應(yīng)用并實(shí)現(xiàn)webpack打包,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12vue實(shí)現(xiàn)進(jìn)入全屏和退出全屏的示例代碼
最近一個(gè)項(xiàng)目需要進(jìn)行大屏展示,所以登錄完就要處于一個(gè)全屏的狀態(tài),本文主要介紹了vue實(shí)現(xiàn)進(jìn)入全屏和退出全屏的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12vue-cli實(shí)現(xiàn)異步請(qǐng)求返回mock模擬數(shù)據(jù)
網(wǎng)上有不少使用mockjs模擬數(shù)據(jù)的文章,但基本都是本地?cái)r截請(qǐng)求返回?cái)?shù)據(jù),本文主要介紹了vue-cli實(shí)現(xiàn)異步請(qǐng)求返回mock模擬數(shù)據(jù),文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Vue學(xué)習(xí)筆記進(jìn)階篇之多元素及多組件過渡
本篇文章主要介紹了Vue學(xué)習(xí)筆記進(jìn)階篇之多元素及多組件過渡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07安裝node.js以及搭建vue項(xiàng)目過程中遇到的問題詳解
為了讓一些不太清楚搭建前端項(xiàng)目的小白,更快上手,下面這篇文章主要給大家介紹了關(guān)于安裝node.js以及搭建vue項(xiàng)目過程中遇到問題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06vue 自定指令生成uuid滾動(dòng)監(jiān)聽達(dá)到tab表格吸頂效果的代碼
這篇文章主要介紹了vue 自定指令生成uuid滾動(dòng)監(jiān)聽達(dá)到tab表格吸頂效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09