搜索

首页  >  问答  >  正文

javascript - vue 初始化数据赋值报错

vue代码

<script>
import axios from 'axios';
export default {
    data() {
        return {
            titleList: [],
        }
    },
    created() {
        this.axios.get('XX').then(function(response) {
            console.log(response.data);
            this.titleList=response.data;
        }).catch(function (error) {
            console.log(error);
        });
    }
}
</script>

报错

TypeError: Cannot set property 'titleList' of undefined
类型错误,不能设置未定义的属性,

数据

response.data是一个对象数组
我已经初始化了titleList,不知为何说他未定义,求大神解答

漂亮男人漂亮男人2710 天前778

全部回复(6)我来回复

  • 伊谢尔伦

    伊谢尔伦2017-06-26 10:57:47

    this 指向更改了 你可以打印出this来看一下指向谁


    解决方案

    1.用箭头函数吧
    2.保存this (let _this = this)

    回复
    0
  • 巴扎黑

    巴扎黑2017-06-26 10:57:47

    雷雷

    回复
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-26 10:57:47

    this.axios.get('XX')
        .then(function (response) {
          response=response.body;
          this.titleList=response.data;
        })
        .catch(function (error) {
          console.log(error);
    })
    

    这样试下。如果不行,把错误贴出看下!

    回复
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-26 10:57:47

    this指针丢失,可以使用箭头函数,也可以用一个变量保存this let _this = this

    回复
    0
  • 習慣沉默

    習慣沉默2017-06-26 10:57:47

    我在使用axios请求数据的时候记得是在程序入口文件main.js里面全局引入axios类库,试试引入后用Vue.prototype.$http=axios,之后就可以在全局使用了,至于楼上给出的答案指出的this指针问题,可以试试,我习惯了es6的语法,所以项目中用的一般都是箭头函数

    回复
    0
  • 阿神

    阿神2017-06-26 10:57:47

    axios.get('***').then((res) => {
        this.titleList=res.data;
    });

    使用这种方式试试

    回复
    0
  • 取消回复