我想使用过滤器来执行翻译。
问题是' 这个'并没有指向我的过滤函数中的vue实例。
这就是我现在所拥有的。
在我的模板中我有这个:
<p>{{ parking.status | translate }} </p>
在我的组件中我有这个:
new Vue({ ...
filters: {
translate: function(value, vue) {
return this.$i18n.t('MLAA-47');
}
我得到的错误是这= = undefined。
如何将其指向我的过滤器函数中的vue实例?
答案 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')