Jam*_*mie 7 javascript prototype vue.js vuex
在我的app.js文件中,我构建了这个,所以我可以在vue中使用翻译:
Vue.prototype.trans = string => _.get(window.i18n, string);
Run Code Online (Sandbox Code Playgroud)
这在我的vue文件中运行良好:
{{ trans('translation.name') }}
Run Code Online (Sandbox Code Playgroud)
问题是我正在使用vuex,我需要在模块中翻译一些东西:
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
export default {
namespaced: true,
state: {
page: 1,
criterias: [
{
name: this.trans('translation.name'),
filter: "life",
active: false
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这里this.trans('translation.name')没有用.我怎么能让这个工作?
我会把变异的Vuex原型称为一种不好的做法,在这种情况下,它确实没有必要.
只需创建一个名为的文件,localization.js并在该文件中实例化i18n插件.加上导出命名函数以返回相同的i18n实例.
// localization.js
const i18n = new VueI18n({ ... });
export const getLocalization = () => i18n;
export default i18n;
Run Code Online (Sandbox Code Playgroud)
然后在Vuex模块中导入getLocalization函数并执行它以获取相同的i18n实例并使用它进行翻译.
// vuex-module.js
import Vue from 'vue';
import Vuex from 'vuex';
import { getLocalization } from './localization';
Vue.use(Vuex);
const i18n = getLocalization();
export default {
state: {
criteria: i18n('translation.name'),
},
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |