Vue中动态展示数据的字典项

news2024/12/30 3:30:30

问题描述

今天在写自己网站的时候,遇到一个问题,不知道各位前端初学者有没有遇到过这个问题

如图所示:我通过接口查询到一些信息,有两个属性是枚举数据(魔法值)

我们称这种数据为字典项,因为开发中一般称0,1,2称这种数据为字典项,而他们的集合成为字典

比如说sex(性别)是一个字典项,它有两个字典项:0代表女,1代表男

在这里插入图片描述

当然,作为后端人员,想处理这种问题简直不要太简单,我可以通过mysql的case when函数,或者在service进行三元运算符等逻辑处理都是可以的。

但是我今天想在前端解决这个问题,经过我的研究,找到了两种实现方式,正好我有两个数据都是这样类型的,那就一种方式解决一个把。

解决问题

解决问题之前,我觉得不管是处于前端还是后端工作人员,都应该知道字典项的含义,在我的项目里,是这么定义的:

在这里插入图片描述

搞清楚字典和字典项之后,就可以编写逻辑判断代码了

方式1 使用插槽

这种方式就是使用vue中的插槽,根据scope.row.x获取改行的某个属性,然后根据三元运算符动态的区进行判断和展示数据

scope.row可以传这一行数据的所有属性作为参数,删除的时候就可以使用它把id传过来进行删除

为了方便对比,我把两个展示性别的代码放在一起进行比较

在这里插入图片描述

这样页面上就是我们想要的数据了,而不是枯涩的字典值

在这里插入图片描述
关键代码如下:

 <!-- 直接展示接口获取到的性别 -->
  <el-table-column
      prop="sex"
      label="性别"
      width="90"
      align="center"
    ></el-table-column>

    <!-- 判断字典项.根据字典项进行动态展示性别信息 -->
     <el-table-column label="性别" width="60" align="center"  prop="sex">
         <template slot-scope="scope">{{ scope.row.sex === 0 ? '女' : '男' }}</template>
      </el-table-column>
    <el-table-column

方式2 使用formatter格式化

使用formatter,它是element-ui的table组件中众多属性的其中一个:

在这里插入图片描述

也可以找到它的使用说明:

在这里插入图片描述

它使用起来也很简单,简单来说就是可以给table的表头一个formatter属性,用于格式化指定列的值,接受一个Function,会传入两个参数:row和column,可以根据自己的需求进行处理。

格式为:

 <!-- 通过formatter格式化status字典项 -->
    <el-table-column
      prop="status"
      label="状态"
      width="90"
      align="center"
      :formatter="formatter"
    ></el-table-column>

 methods: {
    formatter(row,column) {
      console.log('row='+row)
      console.log('column'+column) 
    }
}

row和column这两个参数,都是对应的某一条完整的数据

首先看下row吧

在这里插入图片描述
可以看到,有几条数据就有几条row

在这里插入图片描述

点击某条row,可以看到这条row里面的全部字段信息

在这里插入图片描述

接下来是cloumn

在这里插入图片描述

其实和row一样的

在这里插入图片描述

所以我个人喜欢用row去做格式化判断,通过row.x获取该行的属性进行格式化判断

但是如果声明了column参数但是不适用,页面就编译不了,所以我通常只会保存row参数,舍去column参数

在这里插入图片描述
在这里插入图片描述

所以完整写法应该是:

这里我依然是暴露了格式化和原生两种方式做对比

在这里插入图片描述

也是可以正常展示我们想要的数据的

在这里插入图片描述

扩展

1. formatter函数自定义

不要觉得formatter函数一定要叫formatter,可以根据自己的业务场景灵活改变的,比如我这个是判断status的,我就可以把formatter对应的函数名称改为statusFormatter,效果也是一样的
在这里插入图片描述
在这里插入图片描述
前面的:formatter可不能改啊,这是官网定义好的,如果改了就不行了!

在这里插入图片描述

倒不是说会报错,只是不生效

在这里插入图片描述

使用column代替row格式化

上面提到过,row和column是一样的,name既然row可以做到,column是不是也可以做到呢?

答案是可以的,不过我更喜欢使用row,因为row就是行的意思,在此处代表的就是一行,显得更加形象

在这里插入图片描述

效果也是一样的:

在这里插入图片描述

总结

以上就是我发现的两种动态展示字典项的方式了,大家根据各自的需求两个选择即可,我个人更喜欢第一种。

当然不止这两种方式,如果有别的方式或者好用的第三方库也欢迎评论留言

我是后端开发,描述的可能不是很清楚,如果有哪里出错,欢迎评论或者私信告诉我,希望多多包涵。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AWS Markeplace 上的 DolphinDB MGR 快速上手

1. AWS 上的 DolphinDB MGR 简介 DolphinDB MGR 是部署于 Kubernetes 上的 DolphinDB 集群自动运维系统&#xff0c;提供包括部署、升级、扩缩容、配置变更的 DolphinDB 全生命周期管理。通过 DolphinDB MGR&#xff0c;DolphinDB 可以无缝运行在公有云或私有部署的 Kubernete…

openEuler RISC-V 的 Firefox 性能大升级,最高 40 倍性能提升

RISC-V SIG 择日即将发布 openEuler RISC-V 22.03 V2 版本镜像。本次发版会提供带有 SpiderMonkey JIT 编译支持的 Firefox 最新版本和带有 LLVMpipe 优化的 Mesa 最新版本安装源供使用者选装测试&#xff0c;预期图形界面使用性能会获得可观优化。 新版本的 Firefox 开启 JIT…

5.3、UDP 和 TCP 的对比

在使用 TCP/IP 体系结构的网络通信中&#xff0c;这两个协议的使用频率仅次于网际层的 IP 协议 TCP/IP 体系结构应用层中的某些协议需要使用运输层的 TCP 提供的服务 而另一些协议需要使用运输层的 UDP 提供的服务 1、UCP(无连接) & TCP(面向连接) 1.1、UDP 如下所示&am…

小程序:会议OA项目-其它页面

目录 一、tabs组件及会议管理布局 自定义tabs组件 跟着官网来感受一下 会议管理的布局 二、个人中心布局 一、tabs组件及会议管理布局 自定义tabs组件 文档参考:自定义组件 | 微信开放文档 跟着官网来感受一下 先建一个文件夹名为components&#xff0c;里面再建一个tabs的…

【C语言进阶(NEW)】六、文件操作(一)|文件|文件的打开和关闭|文件的顺序读写|文件读取结束的判定

目录 一、文件 1.1 什么是文件 1.1.1 程序文件 1.1.2 数据文件 1.2 为什么使用文件 1.3 文件名 二、文件的打开和关闭 2.1 文件指针 2.2 文件的打开和关闭 三、文件的顺序读写 3.1 fgetc 和 fputc&#xff08;字符输入输出函数&#xff09; 3.2 fgets 和 fputs&am…

20行原生JS代码手写ElementUI表格组件

又是许久没有写博客了&#xff0c;这几年的疫情&#xff0c;总是居家&#xff0c;时间久了&#xff0c;慢慢的总会想很多。现在越发觉得想做的事情一定要尽早去做&#xff0c;不然总说等下一次&#xff0c;很多时候&#xff0c;就没有下一次了。 今天给大家分享一下如何用原生…

从0到1完成一个Vue后台管理项目(十七、使用Echarts:柱状图、折线图)

往期 从0到1完成一个Vue后台管理项目&#xff08;一、创建项目&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;二、使用element-ui&#xff09; 从0到1完成一个Vue后台管理项目&#xff08;三、使用SCSS/LESS&#xff0c;安装图标库&#xff09; 从0到1完成一个Vu…

DB性能跟不上,加缓存就够了?

服务端软件开发时&#xff0c;通常会把数据存储在DB。而服务端系统遇到的第一个性能瓶颈&#xff0c;往往发生在访问DB时。 这时大部分开发会拿出“缓存”&#xff0c;通过使用Redis在DB前提供一层缓存数据&#xff0c;缓解DB压力&#xff0c;提升服务端性能。 在数据库前添加…

nohup后台运行,进程查看与终止(ubuntu)

1.nohup用途&#xff1a;不挂断地运行命令。语法&#xff1a;nohup Command [ Arg … ] [ & ]无论是否将 nohup 命令的输出重定向到终端&#xff0c;输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写&#xff0c;输出重定向到 $HOME/nohu…

threejs 学习一

前提 threejs官网&#xff1a;https://threejs.org/ 由于官网访问慢&#xff0c;可以github下载压缩包解压后本地启动 github地址&#xff1a;https://github.com/mrdoob/three.js/ 下载好后解压 安装依赖 npm install 启动&#xff1a;npm start 目录介绍&#xff1a; …

语音识别技术简叙述

语音识别技术简述 语音识别的概念 语音识别技术都是让智能设备能够听懂人类语言&#xff0c;其实一门涉及数学信号处理、人工智能、语言学、数理统计学、声学、情感学及心理学等多学科交叉的学科。这项技术可以提供比如自动客服、自动语音翻译、命令控制&#xff0c;语音验证…

【vue】关于vue2和vue3响应式原理的区别

我们都知道&#xff0c;在Vue2中的数据响应式原理存在许多缺陷。 例如无法对新增和直接删除的数据做到响应式&#xff0c;无法直接操作数组进行响应式处理等等。 而在Vue3中&#xff0c;作者很好的解决了这些缺陷&#xff0c;让我们来对比一下Vue2与Vue3对数据响应式处理的具体…

前端如何保证设置的font-family成功生效?

背景 最近开发的一个新页面&#xff0c;在产品验收的时候跟我反馈说页面里的字体跟设计稿中的字体不一样&#xff1b; 问题的关键是我明明记得我有单独设置过 font-family属性&#xff0c;于是我通过Chorme浏览器的调试工具查看了一下DOM的生效样式&#xff1b; 明明是已经设…

IDEA、TortoiseSVN,TortoiseGit提交忽略文件或文件夹

使用IDEA 的SVN插件提交文件是总是会提交一些不需要提交的文件; 我们可以通过一些简单设置忽略这些文件&#xff1a; 1、IDEA 1、idea设置<<--File Types<<--ignore files and folders 原有的过滤条件&#xff1a;*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store…

yolov3-tiny的darknet权重转onnx

前言 之前一直鸽了yolov3-tiny的onnx模型修复&#xff0c;今天终于把最后一个bug解决了&#xff0c;如果想直接享受成果的&#xff0c;直接点我的github仓库下载&#xff0c;使用说明都写了&#xff0c;这篇文章呢主要是给大家分享一下思路和过程&#xff0c;希望能够启发更多…

初识Linux

文章目录初识Linux操作系统概述硬件和软件操作系统常见操作系统总结初识LinuxLinux的诞生Linux内核Linux发行版总结虚拟机介绍虚拟机总结远程连接Linux系统图形化、命令行使用命令行学习Linux系统远程连接工具总结初识Linux 操作系统概述 硬件和软件 我们所熟知的计算机是由…

领域驱动设计:微服务设计为什么要选择DDD?

我们知道&#xff0c;微服务设计过程中往往会面临边界如何划定的问题&#xff0c;我经常看到项目团队为微服务到底应该拆多小而争得面红耳赤。不同的人会根据自己对微服务的理解而拆分出不同的微服务&#xff0c;于是大家各执一词&#xff0c;谁也说服不了谁&#xff0c;都觉得…

Day855.生产者-消费者模式 -Java 并发编程实战

生产者-消费者模式 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于生产者-消费者模式的内容。 Worker Thread 模式类比的是工厂里车间工人的工作模式。 但其实在现实世界&#xff0c;工厂里还有一种流水线的工作模式&#xff0c;类比到编程领域&#xff0c;就是生…

RoboMaster EP 实用功能开发(三): 基于树莓派的ROS2机器人系统搭建

功能&#xff1a;在树莓派4b上安装ros2系统&#xff0c;引入robomaster sdk&#xff0c;搭建一个基于ROS2的机器人系统&#xff0c;用于ROS系统的学习、开发和实践。 硬件&#xff1a;RobotMaster EP、树莓派4b 系统平台&#xff1a;Ubuntu 20.04、ROS2&#xff08;Foxy&…

Selenium【Selenium环境搭建与Junit5】

Selenium【Selenium环境搭建与Junit5】&#x1f34e;一. 自行下载谷歌浏览器或者火狐浏览器&#x1f352;1.1 安装好之后需要去掉谷歌(火狐)浏览器自动更新(建议)&#x1f352;1.2下载谷歌(火狐)驱动&#x1f34e;二.Selenium下载与配置&#x1f352;2.1Selenium下载&#x1f3…