vue前端数据字典渲染数据


前言

提示:分享本次博客内容的缘由:

前天一个小伙伴遇到前端数据字典渲染的问题,于是我就写了一个demo仅供参考,来到自己的博客记录一波。


提示:以下是本篇文章正文内容,下面案例可供参考

一、前端为什么会有数据字典

示例:有时候我们的后端小伙伴可能不太想去处理数据格式,因为某些字段存在数据库字段里是以1,2,3这种格式,但是我们前端看到的可能是张三,李四,王五,这时候想实现这种效果这有两个办法,一个是后端去做数据处理给你在res里面给你返回回来,要不就是前端去处理数据给转换过来,

二、展示效果

在这里插入图片描述

代码展示

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>test</title>
	</head>
	<body>
		<div id="app">

			<h2>
				后端返回数据
			</h2>

			<ul>
				<li>
					{{tableData.dict_pay_mode}}
				</li>

				<li>
					{{tableData.sex}}
				</li>
			</ul>

			<hr/>

			<h2>
				前端字典处理后数据
			</h2>

			<ul>
				<li>
					{{tableNewData.dict_pay_mode}}
				</li>

				<li>
					{{tableNewData.sex}}
				</li>
			</ul>

		</div>
	</body>
	<script src="/js/vue.js"></script>
	<script type="text/javascript">

		var app = new Vue({
			el:"#app",
			data:{

				//模拟数据字典
				JSONOBJECT:{
					dict_pay_mode: [{
							value: "1",
							label: "保税区"
						}, {
							value: "2",
							label: "驻厂监管"
						}, {
							value: "3",
							label: "\t保税工厂"
						}, {
							value: "4",
							label: "特殊行业"
						}, {
							value: "5",
							label: "保税维修"
					}],
					sex:[{
						value: "1",
						label: "男"
					},{
						value: "2",
						label: "女"
					}]

				},

				//模拟后端数据返回
				res:{
					code:200,
					data:{
						dict_pay_mode:1,
						sex:2
					}
				},

				//表格数据
				tableData:{

				},
				//字典处理后的新数据
				tableNewData:{

				}





			},
			methods:{

				getData(){
					this.tableData = this.res.data;  //模拟ajax请求数据赋值

					let keys = [];
					for (var key in this.tableData) {
					  keys.push(key);
					}

					for(let i = 0 ;i<keys.length ;i++) {
						let obj = {};
						obj[keys[i]] = this.tableData[keys[i]];
						this.tableNewData[[keys[i]]] = this.CodeToText(obj,this.JSONOBJECT);
					}
					console.log(this.tableNewData)
				},

				//中文转code
				TextToCode(obj,json){

				},

				//code转中文
				CodeToText(obj,json){

					let text = "";  //返回的内容text

					let objKeys = [];

					for (var key in obj) {
						objKeys.push(key);
					}

					let keys = [];
					for (var key in json) {
					  keys.push(key);
					}

					objKeys.forEach(el=>{
						keys.forEach(element => {
							if(el == element){
								json[element].forEach(item=>{
									if(item.value == obj[el]){
										text = item.label;
										return;
									}
								})
								return;
							}
						});
					})
					return text;
				},
			},
			created() {
				this.getData();
			},
			mounted() {
			},
		})
	</script>
</html>


源码地址

源码地址


总结

不过我这个demo仅供参考,cv工程师,还是需要拿过去的时候改改,结合自己的项目

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 EleAdminPro 前端框架中使用 Vue 3、Ant Design Vue、Vite 和 TypeScript 来匹配字典数据并展示,你可以按照以下步骤进行操作: 1. 首先,定义一个字典数据的映射关系,将字典的数字值作为键,对应的文字作为值。可以将这个字典数据存储在一个对象中,或者从后端接口获取。 2. 在组件中引入所需的依赖,包括 Vue、Ant Design Vue 组件和相关的样式。 3. 在组件的 `data` 选项中定义表格的数据源,可以是一个数组。 4. 在模板中使用 `a-table` 组件来渲染表格,并设置表格的列配置。 5. 在需要匹配字典数据的列配置中,使用 `customRender` 自定义渲染函数来处理每个单元格的展示内容。 - 在自定义渲染函数中,获取当前单元格的值。 - 使用字典映射关系对象,根据当前值查找对应的文字。 - 返回匹配后的文字作为单元格的展示内容。 下面是一个示例代码片段: ```vue <template> <a-table :dataSource="tableData" :columns="tableColumns"></a-table> </template> <script> import { defineComponent } from 'vue'; import { Table } from 'ant-design-vue'; export default defineComponent({ components: { 'a-table': Table }, data() { return { tableData: [ { id: 1, status: 1 }, { id: 2, status: 2 }, { id: 3, status: 3 } ], dictionary: { 1: '进行中', 2: '已完成', 3: '已取消' } }; }, computed: { tableColumns() { return [ { title: 'ID', dataIndex: 'id' }, { title: '状态', dataIndex: 'status', customRender: (text) => { return this.dictionary[text]; } } ]; } } }); </script> ``` 在上述示例中,我们定义了一个表格,并且在状态列配置中使用了自定义渲染函数来匹配字典数据并展示对应的文字。 这样,当表格渲染时,字典数据会被匹配并展示在对应的列中。 请注意,示例中的代码是基于 Vue 3 和 Ant Design Vue 的用法,如果你使用的是 Vue 2 或其他 UI 组件库,语法可能会有所不同。 希望以上信息对你有帮助!如果你还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值