【问题标题】:how do I access `this.` in exported in vuejs如何访问在 vuejs 中导出的“this.”
【发布时间】:2018-03-25 06:19:26
【问题描述】:

我有一些返回简单数据的文件,例如 vuex 的 mutation.js,但通常它们是这样的:

export default {
 ...
 someFunction() {}
 ...
}

现在,我想访问this.,这样我就可以使用像this.$t('TRANS_TOKEN') 这样的vue-i18n 翻译,但由于某种原因我无法使用this. 我正在考虑在这个文件中包含vue :import vue from 'vue' 并且可能会做vue.$t(..) 如果它有效,但我尝试过它并没有

【问题讨论】:

  • 你对你导入的组件做了Vue.use()吗?
  • 其实是一个变异文件,只是导出了一些函数
  • 您应该将翻译后的文本作为参数包含在提交中。
  • 难道没有更好的方法吗?

标签: javascript vue.js vuejs2 vue-i18n


【解决方案1】:

首先是一个问题。为什么要在突变文件中进行翻译?我只会在你的组件中保留翻译。

但是你可以通过这样做来实现你想要的

// i18n.js
const i18n = new VueI18n();

export default i18n;

// main.js
import VueI18n from 'vue-i18n';
import i18n from './i18n.js';

Vue.use(VueI18n);

new Vue({
    i18n,
    ...
});

// Anywhere else, grab the i18n instance to do translations
import i18n from './i18n.js';

i18n.t('translate this');

Documentation 用于 VueI18n 实例上的所有可用方法。

【讨论】:

  • 这是一个很好的答案,但仅适用于需要翻译的人。我正在研究如何在导出默认文件中获取this.
  • 你不能。 export default 在它自己的上下文中运行,因此有它自己的 this。 Vue 组件在其组件上下文中运行,并将其 this 设置为 vue 实例。这就是为什么您可以在组件中访问 this.$t 的原因。
  • 但是必须有解决方法吗?这可能很难,但并非不可能
  • 强烈建议不要搞砸javascript模块的这个上下文。
  • @hidar,你不应该改变组件或模块的“this”上下文,但如果你想这样做,你可以尝试this = Object.assign(this, i18n)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
  • 2017-11-26
  • 2016-08-15
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2019-08-04
相关资源
最近更新 更多