vue 过滤器filter中this为undefined

2020-04-07  本文已影响0人  krystal_H

vue过滤器filtersthisundefined

<span>{{form.legalSettlementTimeUnit | transUnit}}</span>
filters: {
    transUnit(val) {
      console.log(this) // undefined
      return val ? this.timeLimitMap[val] : ''
    }
}

可以使用computed解决:

<span>{{transUnit(form.legalSettlementTimeUnit)}}</span>
computed: {
   ...mapState(['timeLimitMap', 'rightMap']),
   transUnit(val) {
     return (val) => val ? this.timeLimitMap[val] : ''
   }
}
image.png

vue中的过滤器更偏向于对文本数据的转化,而不能依赖this上下文,如果需要使用到上下文this我们应该使用computed计算属性的或者一个method方法

上一篇 下一篇

猜你喜欢

热点阅读