1. 程式人生 > >小程式Page頁面詳解

小程式Page頁面詳解

在index.js檔案中建立一個Page函式用來註冊頁面,接受一個Object引數,包括:

data(Object)            //頁面初始化資料
onLoad(Fuction)         //生命週期函式--監聽頁面載入
onReady(Fuction)        //生命週期函式--監聽頁面初次渲染完成
onShow(Fuction)         //生命週期函式--監聽頁面顯示
onHide(Fuction)         //生命週期函式--監聽頁面隱藏
onUnload(Fuction)       //生命週期函式--監聽頁面解除安裝
onPullDownRefresh(Fuction)
//頁面相關事件處理函式--監聽使用者下拉動作 onReachBottom(Fuction) //頁面上拉觸底事件的處理函式 onShareAppMessage(Fuction) //使用者點選右上角轉發 onPageScroll(Fuction) //頁面滾動觸發事件的處理函式 其他(Any) //開發者可以新增任意的函式或資料到 object 引數中,在頁面的函式中用 this 可以訪問

初始化資料Data

初始化資料將作為頁面的第一次渲染。data 將會以 JSON 的形式由邏輯層傳至渲染層,所以其資料必須是可以轉成 JSON 的格式:字串,數字,布林值,物件,陣列。簡單的來講就是所用資料的定義和初始化。
渲染層可以通過 WXML 對資料進行繫結。即在Data中定義的資料需要通過wxml檔案進行框架的連線。
eg:
wxml

<view class="can_box">
    <button type="{{button_type}}" size="default" bindtap="can_str">{{button_text}}</button>
</view>

js

    data:{
        button_text:'連線裝置',
    },

生命週期函式

  • onLoad,onShow函式
    初始化,只調用一次,為小程式執行時開啟的第一個頁面。

  • onReady函式
    一個頁面只會呼叫一次,表示該頁面初次渲染完成,可以與檢視層互動

  • onHide函式
    頁面隱藏,呼叫 API wx.navigateTo 或使用元件 < navigator open-type=”navigateTo”/ >時開啟新頁面

  • onUnload函式
    頁面重定向:呼叫 API wx.redirectTo 或使用元件 < navigator open-type=”redirectTo”/ >
    頁面返回:呼叫 API wx.navigateBack 或使用元件< navigator open-type=”navigateBack”>或使用者按左上角返回按鈕
    重啟動:呼叫 API wx.reLaunch 或使用元件 < navigator open-type=”reLaunch”/>

事件處理函式

在wxml中新增事件繫結,如果觸發該事件則執行此函式
eg:
wxml

    <view class="control_link">
        <button bindtap="steps_control">讀取步數</button>
    </view>

js

    steps_control:function(){
        var that = this;
        var steps_data = that.data.steps_data;
//讀取資料
        wx.readBLECharacteristicValue({
            deviceId: that.data.devices_data.deviceId,
            serviceId: steps_data.service.uuid,
            characteristicId: steps_data.characteristic.uuid,
            success: function(res){
                console.log('讀取步數', res);
                that.setData({
                    steps_data_count:"..."
                });
            }
        });
    },

Page.prototype.setData()
setData 函式用於將資料從邏輯層傳送到檢視層(非同步),同時改變對應的 this.data 的值(同步)。

setData()引數:data(Object),callback(Function).
object 以 key,value 的形式表示將 this.data 中的 key 對應的值改變成 value。 callback 是一個回撥函式,在這次setData對介面渲染完畢後呼叫。
其中 key 可以非常靈活,以資料路徑的形式給出,如 array[2].message,a.b.c.d,並且不需要在 this.data 中預先定義。

注意:

  1. 直接修改 this.data 而不呼叫 this.setData 是無法改變頁面的狀態的,還會造成資料不一致
  2. 單次設定的資料不能超過1024kB,請儘量避免一次設定過多的資料。

wxml

    <view class="control_link">
        <button bindtap="steps_control">讀取步數</button>
    </view>

js

    steps_control:function(){
        var that = this;
        var steps_data = that.data.steps_data;
//讀取資料
        wx.readBLECharacteristicValue({
            deviceId: that.data.devices_data.deviceId,
            serviceId: steps_data.service.uuid,
            characteristicId: steps_data.characteristic.uuid,
            success: function(res){
                console.log('讀取步數', res);
                that.setData({
                    steps_data_count:"..."
                });
            }
        });
    },