微信小程式中,在wx.request({});方法呼叫成功或失敗之後,有時候會需要取得頁面初始化資料data的情況,這個時候,如果使用,this.data來獲取,會出現取得不到的情況,調試頁面也會報undefiend。原因是,在javascript中,this代表著當前對象,會隨著程式的執行過程中的上下文改變,在wx.request({});方法的回呼函數中,物件已經改變,所以已經不是wx. request({});方法物件了,data屬性也不存在了。官方的解決辦法是,複製一份當前的對象,如下: var that=this;//把this對象複製到臨時變數that #在success回呼函數中使用that.data就能取得資料了。 不過,還有另外一種方式,也很特別,是將success回呼函數換一種聲明方式,如下: success: res =>{ this.setData({ loadingHidden: true, hideCommitSuccessToast: false }) } 登入後複製 在這種方式下,this可以直接使用,完全可以獲得到data數據。 再給一個完整的例子: 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); } } 登入後複製 |
#更多微信小程式this和that詳解及簡單實例相關文章請關注PHP中文網!