微信小程序中,在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);    }   }感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答