vue 后端返回的list中添加字段
axios.post("1url")
.then(res =>{
for (let i = 0; i < res.data.data.list.length; i++) {
this.$set(res.data.data.list[i],"display",false)
}
this.List = res.data.data.list;
console.log(this.List )
})
List 是数组,数组里是对象,往对象里添加字段报错
Uncaught (in promise) TypeError: this.$set is not a function
这行报错this.$set(res.data.data.list[i],"display",false)
是什么原因
改成这样
axios.post("1url")
.then(res =>{
this.List = res.data.data.list;
for (let i = 0; i < this.List.length; i++) {
this.$set(this.list[i],"display",false)
}
console.log(this.List )
})
作用域错误,你这里使用了promise,访问的this并不能访问到vue实例。
res =>{
这里面的作用域指向不是指向的vue
}
如下最简单的操作,在外层保存一下this,然后放在内部使用
let that=this
axios.post("1url")
.then(res =>{
for (let i = 0; i < res.data.data.list.length; i++) {
that.$set(res.data.data.list[i],"display",false)
}
that.List = res.data.data.list;
console.log(that.List )
})
axios.post("1url")
.then(res =>{
res.data.data.list.forEach(item=>{
item.display=false
})
this.List = res.data.data.list;
console.log(this.List )
})
没必要像你那样写