国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

微信小程式開(kāi)發(fā)文檔 / 注冊(cè)頁(yè)面

注冊(cè)頁(yè)面

Page


Page()函數(shù)用來(lái)注冊(cè)一個(gè)頁(yè)面。接受一個(gè)object參數(shù),其指定頁(yè)面的初始數(shù)據(jù)、生命周期函數(shù)、事件處理函數(shù)等。

object參數(shù)說(shuō)明:

QQ截圖20170208095619.png

示例代碼:


//index.js
Page({
  data: {
    text: "This is page data."
  },
  onLoad: function(options) {
    // Do some initialize when page load.
  },
  onReady: function() {
    // Do something when page ready.
  },
  onShow: function() {
    // Do something when page show.
  },
  onHide: function() {
    // Do something when page hide.
  },
  onUnload: function() {
    // Do something when page close.
  },
  onPullDownRefresh: function() {
    // Do something when pull down.
  },
  onReachBottom: function() {
    // Do something when page reach bottom.
  },
  // Event handler.
  viewTap: function() {
    this.setData({
      text: 'Set some data for updating view.'
    })
  },
  customData: {
    hi: 'MINA'
  }
})

初始化數(shù)據(jù)

初始化數(shù)據(jù)將作為頁(yè)面的第一次渲染。data將會(huì)以JSON的形式由邏輯層傳至渲染層,所以其數(shù)據(jù)必須是可以轉(zhuǎn)成JSON的格式:字符串,數(shù)字,布爾值,對(duì)象,數(shù)組。

渲染層可以通過(guò)WXML對(duì)數(shù)據(jù)進(jìn)行綁定。

示例代碼:

<view>{{text}}</view>
<view>{{array[0].msg}}</view>
Page({
  data: {
    text: 'init data',
    array: [{msg: '1'}, {msg: '2'}]
  }
})

生命周期函數(shù)

  • onLoad: 頁(yè)面加載

    • 一個(gè)頁(yè)面只會(huì)調(diào)用一次。
    • 接收頁(yè)面參數(shù)可以獲取wx.navigateTowx.redirectTo<navigator/>中的 query。
  • onShow: 頁(yè)面顯示

    • 每次打開(kāi)頁(yè)面都會(huì)調(diào)用一次。
  • onReady: 頁(yè)面初次渲染完成

    • 一個(gè)頁(yè)面只會(huì)調(diào)用一次,代表頁(yè)面已經(jīng)準(zhǔn)備妥當(dāng),可以和視圖層進(jìn)行交互。
    • 對(duì)界面的設(shè)置如wx.setNavigationBarTitle請(qǐng)?jiān)?code>onReady之后設(shè)置。詳見(jiàn)生命周期
  • onHide: 頁(yè)面隱藏

    • 當(dāng)navigateTo或底部tab切換時(shí)調(diào)用。
  • onUnload: 頁(yè)面卸載

    • 當(dāng)redirectTonavigateBack的時(shí)候調(diào)用。

頁(yè)面相關(guān)事件處理函數(shù)

  • onPullDownRefresh: 下拉刷新
    • 監(jiān)聽(tīng)用戶下拉刷新事件。
    • 需要在configwindow選項(xiàng)中開(kāi)啟enablePullDownRefresh。
    • 當(dāng)處理完數(shù)據(jù)刷新后,wx.stopPullDownRefresh可以停止當(dāng)前頁(yè)面的下拉刷新。

事件處理函數(shù)


除了初始化數(shù)據(jù)和生命周期函數(shù),Page中還可以定義一些特殊的函數(shù):事件處理函數(shù)。在渲染層可以在組件中加入事件綁定,當(dāng)達(dá)到觸發(fā)事件時(shí),就會(huì)執(zhí)行Page中定義的事件處理函數(shù)。

示例代碼:

<view bindtap="viewTap"> click me </view>
Page({
  viewTap: function() { 
     console.log('view tap')
  }
})

Page.prototype.setData()


setData函數(shù)用于將數(shù)據(jù)從邏輯層發(fā)送到視圖層,同時(shí)改變對(duì)應(yīng)的this.data的值

注意:

  1. 直接修改this.data無(wú)效,無(wú)法改變頁(yè)面的狀態(tài),還會(huì)造成數(shù)據(jù)不一致。
  2. 單次設(shè)置的數(shù)據(jù)不能超過(guò)1024kB,請(qǐng)盡量避免一次設(shè)置過(guò)多的數(shù)據(jù)。

setData()參數(shù)格式


接受一個(gè)對(duì)象,以key,value的形式表示將this.data中的key對(duì)應(yīng)的值改變成value。

其中key可以非常靈活,以數(shù)據(jù)路徑的形式給出,如array[2].message,a.b.c.d,并且不需要在this.data中預(yù)先定義。

示例代碼:

<!--index.wxml-->
<view>{{text}}</view>
<button bindtap="changeText"> Change normal data </button>
<view>{{array[0].text}}</view>
<button bindtap="changeItemInArray"> Change Array data </button>
<view>{{obj.text}}</view>
<button bindtap="changeItemInObject"> Change Object data </button>
<view>{{newField.text}}</view>
<button bindtap="addNewField"> Add new data </button>
//index.js
Page({
  data: {
    text: 'init data',
    array: [{text: 'init data'}],
    object: {
      text: 'init data'
    }
  },
  changeText: function() {
    // this.data.text = 'changed data'  // bad, it can not work
    this.setData({
      text: 'changed data'
    })
  },
  changeItemInArray: function() {
    // you can use this way to modify a danamic data path
    var changedData = {}
    var index = 0
    changedData['array[' + index + '].text'] = 'changed data'
    this.setData(changedData)
  },
  changeItemInObject: function(){
    this.setData({
      'object.text': 'changed data'
    });
  },
  addNewField: function() {
    this.setData({
      'newField.text': 'new data'
    })
  }
})

getCurrentPages()


getCurrentPages() 函數(shù)用于獲取當(dāng)前頁(yè)面棧的實(shí)例,以數(shù)組形式按棧的順序給出,第一個(gè)元素為首頁(yè),最后一個(gè)元素為當(dāng)前頁(yè)面。

注意:不要嘗試修改頁(yè)面棧,會(huì)導(dǎo)致路由以及頁(yè)面狀態(tài)錯(cuò)誤。

頁(yè)面棧

框架以棧的形式維護(hù)了當(dāng)前的所有頁(yè)面。 當(dāng)發(fā)生路由切換的時(shí)候,頁(yè)面棧的表現(xiàn)如下:

QQ截圖20170208095642.png

以下內(nèi)容你不需要立馬完全弄明白,不過(guò)以后它會(huì)有幫助。

生命周期函數(shù)


下圖說(shuō)明了Page實(shí)例的生命周期

3.png

頁(yè)面的路由

在小程序中所有頁(yè)面的路由全部由框架進(jìn)行管理,對(duì)于路由的觸發(fā)方式以及頁(yè)面生命周期函數(shù)如下:


QQ截圖20170208095659.png

Tab 切換對(duì)應(yīng)的生命周期(以 A、B 頁(yè)面為 Tabbar 頁(yè)面,C 是從 A 頁(yè)面打開(kāi)的頁(yè)面,D 頁(yè)面是從 C 頁(yè)面打開(kāi)的頁(yè)面為例):

QQ截圖20170208095715.png

Bug & Tip

  1. bug: iOS/Android 6.3.30, 首次進(jìn)入頁(yè)面,如果頁(yè)面不滿一屏?xí)r會(huì)觸發(fā) onReachBottom ,應(yīng)為只有用戶主動(dòng)上拉才觸發(fā);
  2. bug: iOS/Android 6.3.30, 手指上拉,會(huì)觸發(fā)多次 onReachBottom ,應(yīng)為一次上拉,只觸發(fā)一次;