使用vuex 创建全局变量,通过vue.prototype创建全局字典读取方法$getGbDictValue返回翻译中文。
根目录下创建"store"文件
进入index.ts
import Vue from 'vue'
import Vuex from 'vuex'
import { IBaseObjectType } from "types";
import DICT from "./modules/dict" //引入dict模块
Vue.use(Vuex)
export default new Vuex.Store<IBaseObjectType>({
modules: {
DICT //注册
}
});
创建dict文件
import { IBaseObjectType } from "types";
const dict = {
namespaced: true,
state: {
SET_GLOBAL_DICT: {},
},
mutations: {
setGlobalDict(state: IBaseObjectType, data: IBaseObjectType) {
state.SET_GLOBAL_DICT = data
},
},
};
export default dict;
在APP.vue 把vuex定义成全局组件
import store from "./store";
Vue.prototype.$store = store;
至此,模块化创建vuex结束 --------------------------------------
在APP.vue 将全局方法引入
import "@/plugins/dict";
创建dict.ts
import { IBaseObjectType } from "@/types";
import Vue from "vue";
const protoInstall = {
// @ts-ignore
install: (Vue): void => {
Vue.prototype.$getGbDict = function (dictName: string): IBaseObjectType {
const result: IBaseObjectType = this.$store.state.DICT.SET_GLOBAL_DICT[dictName] || {};
return result.vauleArray || {};
};
Vue.prototype.$getGbDictValue = function (dictName: string, key: string): string {
const result: IBaseObjectType = this.$store.state.DICT.SET_GLOBAL_DICT[dictName] || {};
return (result.vauleArray || {})[key];
};
}
};
Vue.use(protoInstall);
至此可访问
console.log(this.$getGbDict("hah"), "$getGbDict");