微信小程序 筆記7 Page對象

Page對象

存在於每個頁面的js裏面,Page(Object)函數用來註冊一個頁面。接受一個 Object 類型參數,其指定頁面的初始數據、生命週期回調、事件處理函數等(和app.js裏面東西功能很像)

數據渲染

data屬性渲染

  • 需要放在模板中進行渲染的數據,需要放在Page對象的data屬性中。
  • 放到data中的值,只能使用可以JSON序列化的:字符串,數字,布爾值,對象,數組。否則將不會渲染。例如:function

什麼叫不能序列化的無法渲染呢?比如這個例子:

// pages/QQ/QQ.js
function box()
{
  return "我是box返回的"
}
Page({

  /**
   * 頁面的初始數據
   */
  data: {
    info:box
  },
//...

這種是無法正常執行的。

通過function改變data屬性渲染

  • 直接修改 this.data 而不調用 this.setData 是無法改變頁面的狀態的,還會造成數據不一致。
  • 其中key可以以數據路徑的形式給出,支持改變數組中的某一項或對象的某個屬性,如 array[2].message,a.b.c.d,並且不需要在 this.data中預先定義。

生命週期函數

頁面內部的js配置。

onLoad(Object query)

等同於app.js的onLaunch(options),只是一個全局一個局部。

onShow(options)

補充一點:5分鐘放在後臺不訪問就自動卸載掉了

調用時機:頁面顯示/切入前臺時觸發。

onReady()

頁面初次渲染完成時觸發。一個頁面只會調用一次,代表頁面已經準備妥當,可以和視圖層進行交互了。

注意和onShow()加載內容的區別:onReady()主要是針對導航欄和tabBar(最上面最下面兩塊)

onUnload()

調用時機:頁面卸載時觸發。如redirectTo或navigateBack到其他頁面時

具體來說:當進入一個新的頁面時,會將頁面卸載掉,調用onUnload()

// pages/me/me.js
Page({

  /**
   * 頁面的初始數據
   */
  data: {

  },

  /**
   * 生命週期函數--監聽頁面加載
   */
  onLoad: function (options) {
    console.log("Onload:開始加載初始信息")
  },

  /**
   * 生命週期函數--監聽頁面初次渲染完成
   */
  onReady: function () {
    console.log("onReady:修改導航欄文字")
  },

  /**
   * 生命週期函數--監聽頁面顯示
   */
  onShow: function () {
    console.log("onShow:頁面內容開始顯示")
  },

  /**
   * 生命週期函數--監聽頁面隱藏
   */
  onHide: function () {
    console.log("onHide:進入後臺")
  },

  /**
   * 生命週期函數--監聽頁面卸載
   */
  onUnload: function () {
    console.log("onUnload:頁面卸載")
  },

  /**
   * 頁面相關事件處理函數--監聽用戶下拉動作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 頁面上拉觸底事件的處理函數
   */
  onReachBottom: function () {

  },
//...

路由

在小程序中所有頁面的路由全部由框架進行管理。getCurrentPages()可以獲取當前狀態下的頁面棧

即:頁面結構不發生變化,只是內容發生改變。

getCurrentPages()可以理解爲一個數組,裏面是之前走過的頁面,放在數組裏面。

也就是說,getCurrentPages()可以獲取當前狀態下的頁面棧。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章