Vue使用filters过滤时不能使用this的解决办法
script部分
filters: {
getName(val) {
for (let i = 0; i < this.list.length; i++) {
let id = Object.keys(this.list[i])[0];
if (id === val) {
return this.list[i][val];
}
}
}
},
html部分代码
<span>{{scope.row.spus[0].categoryId | getName}}</span>
在使用filter
过滤器的时候,使用的方式就是使用管道符。管道符|前面是参数,后面是过滤器。
在使用的时候,会报错:this.list
报错,this不能指代vue。
如果在filter中使用this的话,则需要通过过滤器将参数传递过去。
filters: {
getName(val, list) {
for (let i = 0; i < list.length; i++) {
let id = Object.keys(list[i])[0];
if (id === val) {
return list[i][val];
}
}
}
},
html部分代码
<span>{{scope.row.spus[0].categoryId | getName(categoryList)}}</span>
问题解决!