vue数据字典取键值项目的字典问题


Posted in Vue.js onApril 12, 2022

vue数据字典取键值

首先:项目里的数据字典路由已经配好

vue数据字典取键值项目的字典问题

vue数据字典取键值项目的字典问题

进入项目页面

vue数据字典取键值项目的字典问题

引入数据字典

import { getTypeValue } from '@/api/dict/dictValue/index';

vue数据字典取键值项目的字典问题

创建前获取到字典

getTypeValue('org_attr_type').then(response => {
  this.attrTypeOptions = response.data.rows;
});

vue数据字典取键值项目的字典问题

设置el下拉框

vue数据字典取键值项目的字典问题

注意上面的写法是错误的,注意:key,:label, :value值

vue数据字典取键值项目的字典问题

搜索列表也显示

vue数据字典取键值项目的字典问题

vue项目的字典问题

我们在项目中经常会遇到一个字典问题,就是一个从后台获取的一个固定的数组,然后在系统中的很多地方都会通过select选择框用到。如果每次用的时候获取,就会经常出现两个问题:

1.这个数组数据量过大的时候,有可能点击select下拉框,数据还没有返回来,导致select无法选择;

2.每次都重新请求后台,当数据量过大,且同一页面其他接口也比较多时,导致页面加载缓慢。

那怎么解决呢?如下:

在utils中写一个dict.js的文件

内容如下:

//系统中封装好的axios
import { httpPost } from '@/utils/axios'
export function getDict(obj) {
    //这个dictList中的键名都是字典名称,即传入对应名称可获取对应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方法

并对字典进行全局声明:

import { getDict } from "@/utils/dict.js"
Vue.prototype.$dictObject = {}
getDict(Vue.prototype.$dictObject)

之后我们就可以在系统中使用

“$dictObject.字典名” 来代替对应的list了:

 <el-form-item label="专业" prop="majorId">
               <el-select v-model="dataForm.majorId" placeholder="请选择专业">
                  <el-option
                    v-for="item in $dictObject.major"
                    :key="item.id"
                    :label="item.dictName"
                    :value="item.id">
                  </el-option>
                </el-select>
            </el-form-item>
Vue.js 相关文章推荐
vue+iview实现文件上传
Nov 17 Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 Vue.js
Vue $attrs &amp; inheritAttr实现button禁用效果案例
Dec 07 Vue.js
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
详解template标签用法(含vue中的用法总结)
Jan 12 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
vue实现可移动的悬浮按钮
Mar 04 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 Vue.js
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
vue选项卡切换的实现案例
分享一个vue实现的记事本功能案例
vue代码分块和懒加载非必要资源文件
Apr 11 #Vue.js
vue打包时去掉所有的console.log
三种方式清除vue路由跳转router-link的历史记录
Apr 10 #Vue.js
vue route新窗口跳转页面并且携带与接收参数
Apr 10 #Vue.js
You might like
PHP 选项及相关信息函数库
2006/12/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
php 常用的系统函数
2017/02/07 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
jquery 最简单的属性菜单
2009/10/08 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
JS实现网站菜单拖拽移位效果的方法
2015/09/24 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
python根据给定文件返回文件名和扩展名的方法
2015/03/27 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
python django事务transaction源码分析详解
2017/03/17 Python
Python计算斗牛游戏概率算法实例分析
2017/09/26 Python
Python实现PS滤镜的万花筒效果示例
2018/01/23 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
小程序瀑布流解决左右两边高度差距过大的问题
2019/02/20 HTML / CSS
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
JSF界面控制层技术
2013/06/17 面试题
临床医师专业个人自我评价
2014/01/08 职场文书
个人自我评价和职业目标
2014/01/24 职场文书
爱耳日活动总结
2014/04/30 职场文书
护士节活动总结
2014/08/29 职场文书
基层工作经验证明样本
2014/11/16 职场文书
摘录式读书笔记
2015/07/01 职场文书
2019个人工作总结
2019/06/21 职场文书