解决 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; }, },