vue 后端返回的list中添加字段

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 )
          })

没必要像你那样写