经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
解决vue 局部过滤器获取不到this的问题
来源:jb51  时间:2022/1/24 10:37:55  对本文有异议

vue 局部过滤器获取不到this

data里面加个字段赋值this。


在这里插入图片描述

<el-table-column property="sendLab" label="项目流向" width="*">
  <template slot-scope="scope">
    <span>
      {{ scope.row.sendLab | formataLab(that) }}
    </span>
  </template>
</el-table-column>

这里用的element table , 在过滤器里传入参数,that。


在这里插入图片描述


就可以获取到data里的变量了。

vue filters为什么获取不到this

问题

<div>{{auditResult | auditResultNameFilter}}</div>
data() {
  return {
      auditResultOptions: [...]
  }  
},
filters: {
    auditResultNameFilter(status) {
      let [obj] = this.auditResultOptions.filter(item => item.value === status);
      return obj.name;
    }
},

上面会出现报错

原因

关于这个问题尤大有讲

【this undefined in filters #5998】https://github.com/vuejs/vue/issues/5998

在这里插入图片描述

解决方法

我们可以用下面这种写法、或者用计算属性跟方法都行,比如下面这种

<div>{{auditResult | auditResultNameFilter(auditResultOptions)}}</div>
filters: {
    auditResultNameFilter(status, auditResultOptions) {
      let [obj] = auditResultOptions.filter(item => item.value === status);
      return obj.name;
    }
},

以上为个人经验,希望能给大家一个参考,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛