2017-08-29 55 views
2

我想使用过滤器来执行翻译。
问题是'这个'不指向我的vue实例在我的过滤函数中。vue-i18n:如何在vue实例过滤器中使用

这是我目前拥有的。

我的模板里面我有这样的:

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

我的组件里面我有这样的:

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

我得到的错误是,这==未定义。
我如何将它指向我的滤镜函数中的vue实例?

+0

还有的已经回答了同样的问题https://stackoverflow.com/questions/42828664/access-vue-instance-data-inside-filter-method –

回答

4

由于在答案中的评论中的@@ vitaly-mosin解释说你不能在过滤函数中使用this

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

我有同样的问题,我解决了与$ i18n的翻译移动到计算方法,如:它

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

更改为:

内,您的模板,而不是这样的:

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

而且在方法:

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

我想你有一个动态状态(不总是返回:'MLAA-47'),你应该断言你有所有的翻译。它为我工作!

希望它可以帮助你太