今天在使用filters的时候,需要用到this的数据,结果发现,this打印出来的是undefined
原因: 过滤器注册在vue实例之前,所以this指向了window,但是因为严格模式原因,为 undefined;
所以需要全局声明this,在filters中才能指向vue
javascript
//表格中插槽使用filters的地方
<template #joinStatus>
<el-table-column label="随访状态" align="center">
<template slot-scope="scope">
{{ scope.row.joinStatus | joinStatusFilter(that) }}
</template>
</el-table-column>
</template>
//在data中声明that 指向this
data() {
return{
// 保存this以便filter中使用
that: this,
}
}
filters: {
joinStatusFilter(value, that) {
let status = that.statusList.find(item => item.value == value);
return status? status.label : '';
}
},