[vue 进阶] 关于dicts字典的用法

本文介绍了如何在若依框架中自定义字典数据获取方式,通过创建混入和组件,简化了页面间切换时的调用。首先定义字典接口,然后在公共方法文件中提供处理字典数据的类,接着在组件库中添加组件并挂载,最后在main.js中全局注册,以便在各个组件中便捷使用。这种方式提高了代码的复用性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在使用若依框架开发小项目的时候,发现在项目中频繁使用到字典,原本代码中的dicts没有深入研究,故自己写了一个混入来实现想要的字典获取功能。但是觉得每次切换页面都需要调用一下,而且每个系统都有一个mixins混入文件,感觉维护起来稍显繁琐。继而研究了一下dicts的用法,记录一下使用过程。

1.首先确定字典的接口,在若依框架中如下,具体可根据自己后端提供的字典接口进行修改

// 根据字典类型查询字典数据信息
export function getDicts(dictType) {
  return request({
    url: '/system/dict/data/type/' + dictType,
    method: 'get'
  })
}

此段代码在公共的api目录下

2.在公共的方法文件中提供一个方法

目录在 /src/utils/dict/DictData.js

/**
 * @classdesc 字典数据
 * @property {String} label 标签
 * @property {*} value 标签
 * @property {Object} raw 原始数据
 */
export default class DictData {
  constructor(label, value, raw) {
    this.label = label
    this.value = value
    this.raw = raw
  }
}

3.在组件库中添加该组件

目录/src/components/DictData/index.js

import Vue from 'vue'
import DataDict from '@/utils/dict'
import { getDicts as getDicts } from '@/api/system/dict/data'

function install() {
  Vue.use(DataDict, {
    metas: {
      '*': {
        labelField: 'dictLabel',
        valueField: 'dictValue',
        request(dictMeta) {
          return getDicts(dictMeta.type).then(res => res.data)
        },
      },
    },
  })
}

export default {
  install,
}

4.挂载

在main.js中

// 字典数据组件
import DictData from '@/components/DictData'
DictData.install()

5.使用

export default {
  name: "xxx",
  dicts: ['dict_xxx'],
 }

该字典在使用中作为select下拉内容,则使用dict.type.dict_xxx 作为调用。具体为嘛加上这个前缀还未弄清楚,待研究。

根据提供的引用内容,dicts: ['TYPE']是一个字典数据组件中的属性。根据引用,在main.js中,我们可以看到字典数据组件的安装和使用。在引用中,可以看到在install函数中,使用了Vue.use()来安装DataDict,并传入了一个metas对象,其中'*'表示适用于所有类型的字典,然后定义了labelField和valueField,以及request方法来获取字典数据。所以,dicts: ['TYPE']中的'TYPE'表示要获取的字典的类型。在这个例子中,我们可以看到,通过调用getDicts('TYPE')来获取字典数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [若可框架,关于dicts字典用法](https://blog.csdn.net/Amnesiac666/article/details/124790361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [[vue 进阶] 关于dicts字典用法](https://blog.csdn.net/Ase5gqe/article/details/123080971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值