当前位置:首页 > uni-app

uniapp数据字典

2026-02-06 11:13:28uni-app

数据字典的实现方法

在UniApp中实现数据字典功能,可以通过以下几种方式:

全局挂载字典数据 将字典数据挂载到Vue原型上,方便全局调用

// main.js
Vue.prototype.$dict = {
  gender: [
    { label: '男', value: 1 },
    { label: '女', value: 2 }
  ]
}

使用Vuex管理字典 创建专门的字典模块进行集中管理

// store/modules/dict.js
export default {
  state: {
    gender: [
      { label: '男', value: 1 },
      { label: '女', value: 2 }
    ]
  },
  getters: {
    getDict: (state) => (key) => {
      return state[key] || []
    }
  }
}

本地存储字典数据 将字典数据缓存到本地存储中

uni.setStorageSync('dict_gender', [
  { label: '男', value: 1 },
  { label: '女', value: 2 }
])

字典数据的使用示例

模板中使用字典

<view v-for="item in $dict.gender" :key="item.value">
  {{item.label}}
</view>

脚本中使用字典

uniapp数据字典

const genderOptions = this.$dict.gender
const selectedLabel = genderOptions.find(item => item.value === 1).label

从Vuex获取字典

computed: {
  genderOptions() {
    return this.$store.getters.getDict('gender')
  }
}

字典工具函数封装

创建字典工具类

// utils/dict.js
export default {
  // 获取字典标签
  getLabel(dictKey, value) {
    const dict = this.getDict(dictKey)
    const item = dict.find(item => item.value === value)
    return item ? item.label : ''
  },

  // 获取完整字典
  getDict(dictKey) {
    return uni.getStorageSync(`dict_${dictKey}`) || []
  }
}

使用字典工具

uniapp数据字典

import dict from '@/utils/dict.js'
const label = dict.getLabel('gender', 1)

字典数据加载策略

应用启动时加载 在App.vue的onLaunch中加载基础字典

onLaunch() {
  this.loadBaseDicts()
},
methods: {
  async loadBaseDicts() {
    const res = await uni.request({ url: '/api/dict/base' })
    res.data.forEach(item => {
      uni.setStorageSync(`dict_${item.dictKey}`, item.dictData)
    })
  }
}

按需加载字典 在需要时动态加载字典数据

async loadDict(dictKey) {
  if (!uni.getStorageSync(`dict_${dictKey}`)) {
    const res = await uni.request({ url: `/api/dict/${dictKey}` })
    uni.setStorageSync(`dict_${dictKey}`, res.data)
  }
}

字典数据格式规范

推荐使用统一的字典数据结构:

{
  dictKey: 'gender',  // 字典键名
  dictData: [         // 字典数据
    { label: '男', value: 1 },
    { label: '女', value: 2 }
  ],
  remark: '性别字典'  // 字典说明
}

对于带翻译需求的字典,可扩展为:

{
  label: '男',
  value: 1,
  enLabel: 'Male',
  jpLabel: '男性'
}

标签: 字典数据
分享给朋友:

相关文章

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

vue实现数据更改

vue实现数据更改

Vue 数据更改的实现方法 Vue 提供了多种方式来响应式地更改数据,以下是几种常见的方法: 直接修改数据属性 在 Vue 实例中,可以直接修改 data 对象的属性,Vue 会自动检测这些变化并更…

vue实现数据太多

vue实现数据太多

处理 Vue 中大数据量的优化方案 虚拟滚动(Virtual Scrolling) 使用 vue-virtual-scroller 或 vxe-table 等库实现虚拟滚动,仅渲染可视区域内的 DOM…

vue实现数据追加

vue实现数据追加

Vue 实现数据追加的方法 在 Vue 中实现数据追加通常涉及操作数组或对象,以下是几种常见的方法: 使用数组的 push 方法 通过 Vue 的响应式系统,直接调用数组的 push 方法可以追加数…

vue 实现数据添加

vue 实现数据添加

Vue 数据添加的实现方法 在 Vue 中实现数据添加通常涉及表单绑定、事件处理和状态管理。以下是几种常见场景的实现方式: 表单绑定与提交 通过 v-model 实现表单数据双向绑定,使用 @sub…

vue实现对数据分页

vue实现对数据分页

分页实现的基本思路 在Vue中实现数据分页通常需要结合后端API或前端本地数据处理。核心逻辑包括计算总页数、当前页数据切片、页码切换事件处理等。以下提供两种常见实现方式。 前端本地分页实现 适用于数…