首頁 > 微信小程式 > 小程式開發 > 微信小程式 this和that詳解及簡單實例

微信小程式 this和that詳解及簡單實例

高洛峰
發布: 2017-02-21 17:52:57
原創
2737 人瀏覽過
微信小程式中,在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中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板