小程序setData()使用和注意事項


注意:

  1. 直接修改this.data,而不調用this.setData(),是無法改變當前頁面的狀態的,會導致數據不一致
  2. 僅支持可以JSON化的數據
  3. 單次設置的數據不能超過1024KB,盡量避免一次設置過多的數據
  4. 不要把data中的任何一項的value設為undefined,否則這一項將不能被設置,可能會有潛在的問題
代碼示例:
Page({

  /**
   * 頁面的初始數據
   */
 data: {
    value:"初始值"    //定義一個變量value,賦值為:“初始化”

  },
   /**
   * 生命周期函數--監聽頁面加載
   */
  onLoad: function (options) {

  }
  })

直接在wx:request()的success回調函數中使用this.setData()會報這樣一個錯誤:

因為這里的this是相對於wx:request()的當前對象

解決:因為這里的wx:rewuest()是在頁面加載時調用,所以我們可以在onLoad()中定義一個變量that ,將this賦值給that,那么此時的that代表相對於onLoad()的當前對象,然后在success回調函數中直接使用that.setData()即可。

這是設置Page data的示例:

Page({

  /**
   * 頁面的初始數據
   */
  data: {
    score_list: null,
    guanka_list: null,
    currentTab: 0
  },


  /**
   * 生命周期函數--監聽頁面加載
   */
  onLoad: function (options) {
    var that = this   //定義一個全局變量that
    wx.request({
      url: app.globalData.baseUrl + "query/rankByScore",
      type: 'GET',
      dataType: 'json',
      success: function (res) {
        that.setData({
          score_list: res.data.data
        })
        console.log(1, res)
      }
    })
  }
})

 

 

參考鏈接:https://juejin.im/post/5cf244405188252d18205def 

 


免責聲明!

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



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