微信小程序中 this.setData is not a function報錯


在微信小程序中我們一般通過以下方式來修改data中的數據:

比如獲取小程序緩存:

wx.getStorage({
      key: 'is_screen',
      success: function (res) {
        this.setData({
          is_screen: res.data
        })
      }
    })

但是會報錯:

this.setData is not a function

這是因為this作用域指向問題 ,success函數實際是一個閉包 , 無法直接通過this來setData

那么需要怎么修改呢?

我們通過將當前對象賦給一個新的對象

var that = this;

然后使用_this 來setData就行了

完整代碼:

/**
   * 生命周期函數--監聽頁面顯示
   */
  onShow: function () {
    var that = this;
    wx.getStorage({
      key: 'is_screen',
      success: function (res) {
        this.setData({
          is_screen: res.data
        })
      }
    })
  },

可以關注微信公眾號 lovephp,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM