搜尋

首頁  >  問答  >  主體

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,不知為何說他未定義,求大神解答

漂亮男人漂亮男人2750 天前810

全部回覆(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
  • 取消回覆