1、项目实际情况:
表格内的单元格数据,通过后台返回的字段对应的替换为filters中的文字。

<template>
 <span>{{ scope.row.isMain | isMainFilter}}</span>
</template>
.......
filters:{
isMainFilter(isMain) {
      if (isMain) {
        return '是'
      } else {
        return '否'
      }
    }
}

现在项目需要国际化,就需要将filter中的替换文字也要进行国际化。
网上找了一圈,传递this什么的,都没有解决,最后采用的下面的办法。
2、解决方案:

 <span>{{ scope.row.isMain | isMainFilter(te) }}</span>

filter过滤器可以传递多参数,我将一个te函数传递进过滤器内。

isMainFilter(isMain, te) {
      if (isMain) {
        return te('model.yes')
      } else {
        return te('model.no')
      }
    }

然后在methods中定义这个te函数

te(arg) {
      const hasKey = this.$te(arg)
      if (hasKey) {
        const result = this.$t(arg)
        return result
      }
      return arg
    },

methods内的方法,是可以拿到this的,随便就可以拿到i8n语言包的$t函数了。
model.yesmodel.no是对应的语言包。

Logo

前往低代码交流专区

更多推荐