vue设置全局枚举


简介:提交表单时经常用到枚举,获取数据类表时也要用枚举分解状态

思路:

1、请求后台接口获取枚举,保存进localStorage和vueX,每次进入时从localStorage获取枚举保存进vueX,不用反复请求

2、从Store获取枚举设置方法分解枚举,通常用于表格状态

3、利用mixin把枚举混入全局实例,这样可以在全局使用枚举

实现:

1、获取枚举

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    enum: {},//全局枚举 从后台获取
  },
  getters: {
    getEnumData(state) {
      return state.enum
    },
  },
  mutations: {//获取枚举列表
    getEnum(state, data) {
      state.enum = data
    },
  },
})

2、全局设置分解方法和枚举

import Vue from 'vue'
import store from '@/store'
import { mapGetters } from 'vuex'
//全局过滤选择器的枚举
function mapLabel(value, key) {
    // 显示公共enumLabel
    const data = store.state.enum
    if (key && data[key]) {
        return (
            data[key].find((e) => e.value === value) || {
                label: value,
            }
        ).label
    } else return 'no enum'
}
Vue.filter('mapLabel', mapLabel)
//全局获取枚举对象
Vue.mixin({
    computed: {
        ...mapGetters({
            '$enum': 'getEnumData'
        })
    }
})

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM