小編給大家分享一下微信小程序中this和that怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
創(chuàng)新互聯(lián)專(zhuān)業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專(zhuān)業(yè)提供成都服務(wù)器托管,服務(wù)器租用,服務(wù)器托管,服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。
微信小程序中,在wx.request({});方法調(diào)用成功或者失敗之后,有時(shí)候會(huì)需要獲取頁(yè)面初始化數(shù)據(jù)data的情況,這個(gè)時(shí)候,如果使用,this.data來(lái)獲取,會(huì)出現(xiàn)獲取不到的情況,調(diào)試頁(yè)面也會(huì)報(bào)undefiend。原因是,在javascript中,this代表著當(dāng)前對(duì)象,會(huì)隨著程序的執(zhí)行過(guò)程中的上下文改變,在wx.request({});方法的回調(diào)函數(shù)中,對(duì)象已經(jīng)發(fā)生改變,所以已經(jīng)不是wx.request({});方法對(duì)象了,data屬性也不存在了。官方的解決辦法是,復(fù)制一份當(dāng)前的對(duì)象,如下:
var that=this;//把this對(duì)象復(fù)制到臨時(shí)變量that
在success回調(diào)函數(shù)中使用that.data就能獲取到數(shù)據(jù)了。
不過(guò),還有另外一種方式,也很特別,是將success回調(diào)函數(shù)換一種聲明方式,如下:
success: res =>{ this.setData({ loadingHidden: true, hideCommitSuccessToast: false }) }
在這種方式下,this可以直接使用,完全可以獲取到data數(shù)據(jù)。
再給一個(gè)完整的例子:
success: res => { if (res.data.code != 0) { // 提交失敗 this.setData({ loadingHidden: true, hiddenTips: false, tipsContent: res.data.message }) } else { // 提交成功 this.setData({ loadingHidden: true, hideCommitSuccessToast: false }) subBtn = false; // 定時(shí),3秒消失 setTimeout(() => { this.setData({ hideCommitSuccessToast: true }) wx.navigateBack({ delta: 2 }); }, 2000); } }
以上是“微信小程序中this和that怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!