解决 vue 中filters 不能使用 this 问题

this 在 filters 中 不可使用的原因:

filter 过滤器注册在vue实例之前,所以this指向了window,但是因为严格模式原因,为 undefined;

 

解决方法:

在 vue beforeCreat 函数中定义 that = this   filter 中即可使用that 来进行操作

let that;

export default { 
 beforeCreate () {
   that = this;
 }
filters: {
  test () {
  console.log(that)
  }
}
}

还有一种是 在vue  data 函数中定义 that  然后在 filter 函数中将that 作为参数传递进去即可

data(){
  return {
      that:this
   }
}

<el-table-column prop="meetingType" label="类型">
   <template slot-scope="scope">
      <span>{{ scope.row.meetingType | meetingFilter(that) }}</span>
   </template>
</el-table-column> filters: { meetingFilter(val, that) { let aaa = null; that.leixingOptions.forEach((ele) => { if (ele.dictionaryId == val) { aaa = ele.dictionaryName; } }); return aaa; }, },

 

posted @ 2022-06-02 14:12  沁猿春  阅读(2888)  评论(0编辑  收藏  举报