vue 使用字典值及其翻译

摘要:
在日常开发中,我们会遇到很多枚举的值,这么枚举出来的值,我们可以统一处理,称为字典值的使用及翻译。我们使用这个返回的列表。后端保存也是状态码,同样的,在页面中需要显示了这个信息,显示的是男的对应状态码,而不是男这个汉字,这时候就需要翻译这个状态码。

在日常开发中,我们会遇到很多枚举的值,这么枚举出来的值,我们可以统一处理,称为字典值的使用及翻译。

比如说:需要提交表单,表单中有性别和国家选项,这就需要下拉选择框来实现。数据少一点的还可以直接手写,但是像国家城市这种比较多的,手写就不太友好了。这个时候需要后端通过某个接口返回这个枚举值。我们使用这个返回的列表。

翻译就是枚举值对应的汉字与状态码,对照使用。

比如说:在表单里面选择了,性别男,这个时候表单中传递给后端的并不是男,这个汉字,而是对应的状态码(code)。后端保存也是状态码,同样的,在页面中需要显示了这个信息,显示的是男的对应状态码,而不是男这个汉字,这时候就需要翻译这个状态码。

使用字典值首先需要封装

在api中定义接口

import { post } from '@/request/http.js'
//字典值
const newDictApi = data => post('/api/dictApi',{}, data)
export { newDictApi }

在until中定义js函数postDict.js

import { newDictApi } from '@/API/api_newDict'
//查询字典
functiongetNewDict(e){
  var dictList =JSON.parse(sessionStorage.getItem(e)) 
  if(dictList){
    returndictList
  }else{
    return new Promise((resolve)=>{
      newDictApi({ type: e }).then(data=>{
        if (data.code === 200) {
          sessionStorage.setItem(e,JSON.stringify(data.data));
          resolve(data.data)
        }
      })
    })
  }
}
//字典翻译
const translateDict = (list, e)=>{
  var value = ''list.map(i =>{
    if (i.code ==e) {
      value =i.value
    }
  })
  returnvalue
}
export { getNewDict,translateDict }

在main.js中将翻译定义成全局函数

import { translateDict } from './utils/postDict'Vue.prototype.$translateDict =translateDict

newVue({
    router,
    store,})

在某个页面中使用

<template>
  <div>
    <el-select
    style=" 100%"v-model="personalForm.gender"clearable
    placeholder="请选择性别"
    >
      <el-option
      v-for="item in genderList":key="item.value":label="item.value":value="item.code"
      ></el-option>
     </el-select>
           
     <el-select
     style=" 100%"v-model="personalForm.addressCountry"placeholder="请选择国家"clearable
     >
       <el-option
        v-for="item in countryList":key="item.code":label="item.value":value="item.code"
        ></el-option>
     </el-select>      
<div>
使用翻译时候需要把后端返回的状态码code拿到,然后和对应的枚举值做匹配,翻译函数会将对应的值输出出来
{{$translateDict(genderList,scope.row.gender)}}
</div>
 </div>
</template>
<script>
import { getNewDict } from '@/utils/postDict'export default{
  data() {
    return{
      countryList: [],
      genderList: [],
    }
  },
  created() {
    this.init()
  },
  mounted() {},
  methods: {
    async init() {
      this.genderList = await getNewDict('gender')
this.countryList = await getNewDict('country') }, }, } </script>

免责声明:文章转载自《vue 使用字典值及其翻译》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇deepin安装、破解navicatsqlserver批量规律修改字段值下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue页面配置缓存,使页面跳转时填写的数据不丢失

1、项目文件配置App.vue的内容 <template> <div id="app"> <!--所有界面设置缓存--> <keep-alive> <router-view></router-view> </keep-alive>...

微信小程序之base64图片如何预览与一键保存到本地相册?

需求:由于后台服务器各方面的限制,现在服务器返回的图片是base64格式的,小程序端需要支持预览图片和多个图片一键下载功能 一、如何预览base64位图片? WXML页面:item.src的值是base64编码的字符串 <block wx:for="{{imgsLength}}" wx:key="index"> <image...

Vue.set()和this.$set()源码解析

前言 我们在日常项目开发过程中,有时候我们对数组或者对象进行了一些操作后,发现页面数据没有更新到。这个时候就会有疑问,why? 如果我们在看文档有这样一个api,以下内容: Vue.set()和this.$set()实现原理 Vue.set()的源码:... 这里是省略的代码 import { set } from '../observer/index'...

#学习分享#开发基础知识之前端测试(一)

前言:本文用于2018/1/30晚内部分享。主题:前端单元测试 正文: 一、思考 我的目标是,如何浅入本次的主题,让愿意接收陌生信号的“对象”快速简单的get到信号,并且对本次分享产生一个小兴趣。 二、What     本章节主要讲述前端单元测试做什么,vue单元测试做什么。   (1) 基础概念 测试的概念:测试是检测你的应用代码(也叫“生产代码”)...

vue 多个audio播放 一个audio播放其他audio禁止播放

页面:          <div class="right"> <audio :ref="'audio' + index" :src="item.audioUrl" @ended="haveEnded"/> <div :class="{ active: playIndex == index}"...

Vue template 报错 Type expected.Vetur(1110)

解决方案: 1. 文件名称中不要含Test 2.可以复制正常文件,再改名字 排查步骤如下: 1. 按其他博客写的去设置了vetur.validation.template false,切换到问题vue文件,还是报错; 2. 尝试将没报错的文件内容复制过来,依然报错; 3.内容后,输入<template,选择default.vue 模板,依然报错;...