第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue關(guān)于接口數(shù)據(jù)給data變量賦值undefined問題!

vue關(guān)于接口數(shù)據(jù)給data變量賦值undefined問題!

慕村5492868 2018-11-16 17:03:33
我這塊拿到后臺接口數(shù)據(jù)后,給data里變量slides;[]賦值this.slides == 接口數(shù)據(jù),但是反應(yīng)在頁面上會報undefined。子組件就好像在先用slides=[],在作渲染。查了一下推薦給slids:[null],但是試了一下沒有任何用.我這塊只能用 v-if判斷slides的長度是否為零在渲染子組件數(shù)據(jù),才能正常.難道以后拿到的接口數(shù)據(jù)都要這么判斷一下才能正常渲染頁面么,那樣不巨麻煩么?先貼一下代碼:data(){return {//輪播圖數(shù)據(jù)slides:[],}}axois.get('/api/index.aspx?type=GetBanner').then((res)=>{console.log(res);this.slides = res.data;})
查看完整描述

3 回答

已采納
?
pardon110

TA貢獻(xiàn)1038條經(jīng)驗 獲得超227個贊

剛看了一下你寫的代碼,沒那么復(fù)雜。關(guān)鍵需要改變then方法內(nèi)回調(diào)函數(shù)的this指向就可以了。如下兩種方式

//?原生bind方法
.then(function(res){this.slides?=?res.data;}.bind(this))
或者箭頭函數(shù)的寫法
.then(res?=>?this.slides?=?res.data)

如果你對上述方法不理解,可以在axios所在語句上方,聲明一個局部變量持有組件實例引用

var?t?=?this;

然后將then方法內(nèi)的this換為t,如下即可。

t.slides?=?res.data;


查看完整回答
反對 回復(fù) 2018-11-17
  • 慕村5492868
    慕村5492868
    謝謝您哈,我這塊就是采用的箭頭函數(shù),我明白您的意思,在雙層作用域下,this可能就不指向組件示例了,需要聲明保留this指向,或者就是箭頭函數(shù)直接綁定實例.我這塊仔細(xì)思考了一下,就是您說的父組件朝子組件傳值,又是在axios的請求下.出現(xiàn)了異步加載不同步的情況.這塊好像只能在子組件內(nèi)判斷值有沒有傳過去,在做渲染,套一層v-if。
?
pardon110

TA貢獻(xiàn)1038條經(jīng)驗 獲得超227個贊

涉及到父子組件通信,及異步加載數(shù)據(jù)的問題,如果你只是想將后端接口數(shù)據(jù),渲染到頁面。可以嘗試watch,及勾子created方法,將請求置于二者之內(nèi),data選項只是構(gòu)建組件的初始化,是組件生命周期最初始的執(zhí)行。你可以理解為變量聲明,后續(xù)獲取接口賦值即可。

查看完整回答
1 反對 回復(fù) 2018-11-17
?
慕UI02353

TA貢獻(xiàn)1條經(jīng)驗 獲得超0個贊

請問解決了嗎?我也遇到了和你一樣的問題,百思不得其解

查看完整回答
反對 回復(fù) 2019-03-17
  • 3 回答
  • 1 關(guān)注
  • 15577 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號