微信小程序 this和that詳解及簡單實例
微信小程序中,在wx.request({});方法調(diào)用成功或者失敗之后,有時候會需要獲取頁面初始化數(shù)據(jù)data的情況,這個時候,如果使用,this.data來獲取,會出現(xiàn)獲取不到的情況,調(diào)試頁面也會報undefiend。原因是,在javascript中,this代表著當前對象,會隨著程序的執(zhí)行過程中的上下文改變,在wx.request({});方法的回調(diào)函數(shù)中,對象已經(jīng)發(fā)生改變,所以已經(jīng)不是wx.request({});方法對象了,data屬性也不存在了。官方的解決辦法是,復制一份當前的對象,如下:
var that=this;//把this對象復制到臨時變量that
在success回調(diào)函數(shù)中使用that.data就能獲取到數(shù)據(jù)了。
不過,還有另外一種方式,也很特別,是將success回調(diào)函數(shù)換一種聲明方式,如下:
success: res =>{ this.setData({ loadingHidden: true, hideCommitSuccessToast: false }) }
在這種方式下,this可以直接使用,完全可以獲取到data數(shù)據(jù)。
再給一個完整的例子:
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; // 定時,3秒消失 setTimeout(() => { this.setData({ hideCommitSuccessToast: true }) wx.navigateBack({ delta: 2 }); }, 2000); } }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
微信小程序 中wx.chooseAddress(OBJECT)實例詳解
這篇文章主要介紹了微信小程序 中wx.chooseAddress(OBJECT)實例詳解的相關資料,需要的朋友可以參考下2017-03-03