欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

为何使用Vue从后端获取数据后一直赋值失败?-亲测

程序员文章站 2022-04-30 13:37:53
...

今天开始用mock.js和Vue前端进行交互了,然后获取到json数据之后赋值一直失败,困扰了自己好几个小时

   clickHandler(e){
     var that = this;
     this.$axios.get("/news")
     .then(res{
       console.log(res.data);
       let data_ = JSON.stringify(res.data,  null, 4);
       //去除mock对象的数据列表
       this.items = res.data.list;
       console.log(this.items)
     })
     .catch(err=>{
       console.log(err)
     })
     this.isShow=true;
     console.log(this.items)
   }

我在获取到json数据后是这样处理的,然后item数组一直是空的,
为何使用Vue从后端获取数据后一直赋值失败?-亲测
无论我如何改变值。其实奥秘在这里

            .then(function(res){
              let data_ = JSON.stringify(res.data,  null, 4);
              //去除mock对象的数据列表
              this.items = res.data.list;
            })

注意此时的this是什么?是你的Vue对象吗?还是axios对象?在这里调用this.items只会给当前对象赋值,并不会给你的Vue对象的数据赋值,我们有两种解决方案:

  • 使用=>
    .then(res=>{
      let data_ = JSON.stringify(res.data,  null, 4);
      //去除mock对象的数据列表
      this.items = res.data.list;
    })
  • 在函数开始前记录this指针
   var that = this;
   this.$axios.get("/news")
   .then(res=>{
     let data_ = JSON.stringify(res.data,  null, 4);
     //去除mock对象的数据列表
     that.items = res.data.list;
   })

数据成功显示
为何使用Vue从后端获取数据后一直赋值失败?-亲测

相关标签: 开发