javascript - vue 初始化資料賦值報錯
漂亮男人
漂亮男人 2017-06-26 10:55:47
0
6
764

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

漂亮男人
漂亮男人

全部回覆(6)
伊谢尔伦

this 指向更改了 你可以列印出this來看一下指向誰


解決方案

1.用箭頭函數吧
2.儲存this (let _this = this)

巴扎黑

雷雷

过去多啦不再A梦
this.axios.get('XX')
    .then(function (response) {
      response=response.body;
      this.titleList=response.data;
    })
    .catch(function (error) {
      console.log(error);
})

這樣試下。如果不行,把錯誤貼出看下!

扔个三星炸死你

this指標遺失,可以使用箭頭函數,也可以用一個變數儲存this let _this = this

習慣沉默

我在使用axios請求資料的時候記得是在程式入口檔案main.js裡面全域引入axios類別庫,試試引入後用Vue.prototype.$http=axios,之後就可以在全域使用了,至於樓上給的答案指出的this指標問題,可以試試,我習慣了es6的文法,所以專案中用的一般都是箭頭函數

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

用這種方式試試

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!