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