vue-i18n:如何在vue实例过滤器内使用

时间:2017-08-29 09:14:02

标签: vue.js vue-i18n

我想使用过滤器来执行翻译。
问题是' 这个'并没有指向我的过滤函数中的vue实例。

这就是我现在所拥有的。

在我的模板中我有这个:

  <p>{{ parking.status | translate }} </p>

在我的组件中我有这个:

 new Vue({ ...
 filters: {
      translate: function(value, vue) {
          return this.$i18n.t('MLAA-47');
 } 

我得到的错误是这= = undefined。
如何将其指向我的过滤器函数中的vue实例?

2 个答案:

答案 0 :(得分:5)

在该答案的评论中,@ vitaly-mosin指出,您无法在过滤器功能中使用this

  

过滤器主要用于文本转换目的。对于   您应该使用其他指令中更复杂的数据转换   相反,计算属性。

我有同样的问题,我解决了将$ i18n转换为计算方法,如:

在模板中,而不是:

 <p>{{ parking.status | translate }} </p>

将其更改为:

<p>{{ translateStatus(parking.status) }} </p>

在方法中:

methods: {
    translateStatus (status) {
        return this.$t(status)
    }
},

我猜你有一个动态状态(不会总是返回:&#39; MLAA-47&#39;)你应该断言你有所有这些的翻译。它对我有用!

希望它对你也有帮助

答案 1 :(得分:0)

我们可以像这样导入导出 i18n 实例的文件

import i18n from '@/i18n.js'

然后像这样使用

i18n.t('your.message')