新聞中心
Page(Object object)
注冊小程序中的一個頁面。接受一個 Object 類型參數(shù),其指定頁面的初始數(shù)據(jù)、生命周期回調(diào)、事件處理函數(shù)等。

創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、右玉網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為右玉等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
參數(shù)
Object object
| 屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 |
|---|---|---|---|---|
| data | Object | 頁面的初始數(shù)據(jù) | ||
| onLoad | function | 生命周期回調(diào)—監(jiān)聽頁面加載 | ||
| onShow | function | 生命周期回調(diào)—監(jiān)聽頁面顯示 | ||
| onReady | function | 生命周期回調(diào)—監(jiān)聽頁面初次渲染完成 | ||
| onHide | function | 生命周期回調(diào)—監(jiān)聽頁面隱藏 | ||
| onUnload | function | 生命周期回調(diào)—監(jiān)聽頁面卸載 | ||
| onPullDownRefresh | function | 監(jiān)聽用戶下拉動作 | ||
| onReachBottom | function | 頁面上拉觸底事件的處理函數(shù) | ||
| onShareAppMessage | function | 用戶點擊右上角轉(zhuǎn)發(fā) | ||
| onShareTimeline | function | 用戶點擊右上角轉(zhuǎn)發(fā)到朋友圈 | ||
| onAddToFavorites | function | 用戶點擊右上角收藏 | ||
| onPageScroll | function | 頁面滾動觸發(fā)事件的處理函數(shù) | ||
| onResize | function | 頁面尺寸改變時觸發(fā),詳見 響應(yīng)顯示區(qū)域變化 | ||
| onTabItemTap | function | 當(dāng)前是 tab 頁時,點擊 tab 時觸發(fā) | ||
| 其他 | any | 開發(fā)者可以添加任意的函數(shù)或數(shù)據(jù)到 Object 參數(shù)中,在頁面的函數(shù)中用 this 可以訪問 |
示例代碼
//index.js
Page({
data: {
text: "This is page data."
},
onLoad: function(options) {
// Do some initialize when page load.
},
onShow: function() {
// Do something when page show.
},
onReady: function() {
// Do something when page ready.
},
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.
},
onShareAppMessage: function () {
// return custom share data when user share.
},
onPageScroll: function() {
// Do something when page scroll
},
onResize: function() {
// Do something when page resize
},
onTabItemTap(item) {
console.log(item.index)
console.log(item.pagePath)
console.log(item.text)
},
// Event handler.
viewTap: function() {
this.setData({
text: 'Set some data for updating view.'
}, function() {
// this is setData callback
})
},
customData: {
hi: 'MINA'
}
})
data
data 是頁面第一次渲染使用的初始數(shù)據(jù)。
頁面加載時,data 將會以JSON字符串的形式由邏輯層傳至渲染層,因此data中的數(shù)據(jù)必須是可以轉(zhuǎn)成JSON的類型:字符串,數(shù)字,布爾值,對象,數(shù)組。
渲染層可以通過 WXML 對數(shù)據(jù)進(jìn)行綁定。
示例代碼:
在開發(fā)者工具中預(yù)覽效果
{{text}}
{{array[0].msg}}
Page({
data: {
text: 'init data',
array: [{msg: '1'}, {msg: '2'}]
}
})
生命周期回調(diào)函數(shù)
生命周期的觸發(fā)以及頁面的路由方式詳見
onLoad(Object query)
頁面加載時觸發(fā)。一個頁面只會調(diào)用一次,可以在 onLoad 的參數(shù)中獲取打開當(dāng)前頁面路徑中的參數(shù)。
參數(shù):
| 名稱 | 類型 | 說明 |
|---|---|---|
| query | Object | 打開當(dāng)前頁面路徑中的參數(shù) |
onShow()
頁面顯示/切入前臺時觸發(fā)。
onReady()
頁面初次渲染完成時觸發(fā)。一個頁面只會調(diào)用一次,代表頁面已經(jīng)準(zhǔn)備妥當(dāng),可以和視圖層進(jìn)行交互。
注意:對界面內(nèi)容進(jìn)行設(shè)置的 API 如wx.setNavigationBarTitle,請在onReady之后進(jìn)行。詳見生命周期
onHide()
頁面隱藏/切入后臺時觸發(fā)。 如 wx.navigateTo 或底部 tab 切換到其他頁面,小程序切入后臺等。
onUnload()
頁面卸載時觸發(fā)。如wx.redirectTo或wx.navigateBack到其他頁面時。
頁面事件處理函數(shù)
onPullDownRefresh()
監(jiān)聽用戶下拉刷新事件。
- 需要在app.json的window選項中或頁面配置中開啟enablePullDownRefresh。
- 可以通過wx.startPullDownRefresh觸發(fā)下拉刷新,調(diào)用后觸發(fā)下拉刷新動畫,效果與用戶手動下拉刷新一致。
- 當(dāng)處理完數(shù)據(jù)刷新后,wx.stopPullDownRefresh可以停止當(dāng)前頁面的下拉刷新。
onReachBottom()
監(jiān)聽用戶上拉觸底事件。
- 可以在app.json的window選項中或頁面配置中設(shè)置觸發(fā)距離onReachBottomDistance。
- 在觸發(fā)距離內(nèi)滑動期間,本事件只會被觸發(fā)一次。
onPageScroll(Object object)
監(jiān)聽用戶滑動頁面事件。
參數(shù) Object object:
| 屬性 | 類型 | 說明 |
|---|---|---|
| scrollTop | Number | 頁面在垂直方向已滾動的距離(單位px) |
注意:請只在需要的時候才在 page 中定義此方法,不要定義空方法。以減少不必要的事件派發(fā)對渲染層-邏輯層通信的影響。 注意:請避免在 onPageScroll 中過于頻繁的執(zhí)行 setData 等引起邏輯層-渲染層通信的操作。尤其是每次傳輸大量數(shù)據(jù),會影響通信耗時。
onAddToFavorites(Object object)
本接口為 Beta 版本,安卓 7.0.15 版本起支持,暫只在安卓平臺支持
監(jiān)聽用戶點擊右上角菜單“收藏”按鈕的行為,并自定義收藏內(nèi)容。
參數(shù) Object object:
| 參數(shù) | 類型 | 說明 |
|---|---|---|
| webviewUrl | String | 頁面中包含web-view組件時,返回當(dāng)前web-view的url |
此事件處理函數(shù)需要 return 一個 Object,用于自定義收藏內(nèi)容:
| 字段 | 說明 | 默認(rèn)值 |
|---|---|---|
| title | 自定義標(biāo)題 | 頁面標(biāo)題或賬號名稱 |
| imageUrl | 自定義圖片,顯示圖片長寬比為 1:1 | 頁面截圖 |
| query | 自定義query字段 | 當(dāng)前頁面的query |
示例代碼
Page({
onAddToFavorites(res) {
// webview 頁面返回 webviewUrl
console.log('WebviewUrl: ', res.webviewUrl)
return {
title: '自定義標(biāo)題',
imageUrl: 'http://demo.png',
query: 'name=xxx&age=xxx',
}
}
})
onShareAppMessage(Object object)
監(jiān)聽用戶點擊頁面內(nèi)轉(zhuǎn)發(fā)按鈕(button 組件 open-type="share")或右上角菜單“轉(zhuǎn)發(fā)”按鈕的行為,并自定義轉(zhuǎn)發(fā)內(nèi)容。
注意:只有定義了此事件處理函數(shù),右上角菜單才會顯示“轉(zhuǎn)發(fā)”按鈕
參數(shù) Object object:
| 參數(shù) | 類型 | 說明 | 最低版本 |
|---|---|---|---|
| from | String | 轉(zhuǎn)發(fā)事件來源。 button:頁面內(nèi)轉(zhuǎn)發(fā)按鈕; menu:右上角轉(zhuǎn)發(fā)菜單 | 1.2.4 |
| target | Object | 如果 from 值是 button,則 target 是觸發(fā)這次轉(zhuǎn)發(fā)事件的 button,否則為 undefined | 1.2.4 |
| webViewUrl | String | 頁面中包含web-view組件時,返回當(dāng)前web-view的url | 1.6.4 |
此事件處理函數(shù)需要 return 一個 Object,用于自定義轉(zhuǎn)發(fā)內(nèi)容,返回內(nèi)容如下:
自定義轉(zhuǎn)發(fā)內(nèi)容 基礎(chǔ)庫 2.8.1 起,分享圖支持云圖片。
| 字段 | 說明 | 默認(rèn)值 | 最低版本 |
|---|---|---|---|
| title | 轉(zhuǎn)發(fā)標(biāo)題 | 當(dāng)前小程序名稱 | |
| path | 轉(zhuǎn)發(fā)路徑 | 當(dāng)前頁面 path ,必須是以 / 開頭的完整路徑 | |
| imageUrl | 自定義圖片路徑,可以是本地文件路徑、代碼包文件路徑或者網(wǎng)絡(luò)圖片路徑。支持PNG及JPG。顯示圖片長寬比是 5:4。 | 使用默認(rèn)截圖 | 1.5.0 |
示例代碼
在開發(fā)者工具中預(yù)覽效果
Page({
onShareAppMessage: function (res) {
if (res.from === 'button') {
// 來自頁面內(nèi)轉(zhuǎn)發(fā)按鈕
console.log(res.target)
}
return {
title: '自定義轉(zhuǎn)發(fā)標(biāo)題',
path: '/page/user?id=123'
}
}
})
onShareTimeline()
基礎(chǔ)庫 2.11.3 開始支持,低版本需做兼容處理。
本接口為 Beta 版本,暫只在 Android 平臺支持,詳見分享到朋友圈 (Beta)
監(jiān)聽右上角菜單“分享到朋友圈”按鈕的行為,并自定義發(fā)享內(nèi)容。
注意:只有定義了此事件處理函數(shù),右上角菜單才會顯示“分享到朋友圈”按鈕
自定義轉(zhuǎn)發(fā)內(nèi)容
事件處理函數(shù)返回一個 Object,用于自定義分享內(nèi)容,不支持自定義頁面路徑,返回內(nèi)容如下:
| 字段 | 說明 | 默認(rèn)值 | 最低版本 |
|---|---|---|---|
| title | 自定義標(biāo)題,即朋友圈列表頁上顯示的標(biāo)題 | 當(dāng)前小程序名稱 | |
| query | 自定義頁面路徑中攜帶的參數(shù),如 path?a=1&b=2 的 “?” 后面部分 | 當(dāng)前頁面路徑攜帶的參數(shù) | |
| imageUrl | 自定義圖片路徑,可以是本地文件或者網(wǎng)絡(luò)圖片。支持 PNG 及 JPG,顯示圖片長寬比是 1:1。 | 默認(rèn)使用小程序 Logo |
onResize(Object object)
基礎(chǔ)庫 2.4.0 開始支持,低版本需做兼容處理。
小程序屏幕旋轉(zhuǎn)時觸發(fā)。詳見 響應(yīng)顯示區(qū)域變化
onTabItemTap(Object object)
基礎(chǔ)庫 1.9.0 開始支持,低版本需做兼容處理。
點擊 tab 時觸發(fā)
Object 參數(shù)說明:
| 參數(shù) | 類型 | 說明 | 最低版本 |
|---|---|---|---|
| index | String | 被點擊tabItem的序號,從0開始 | 1.9.0 |
| pagePath | String | 被點擊tabItem的頁面路徑 | 1.9.0 |
| text | String | 被點擊tabItem的按鈕文字 | 1.9.0 |
示例代碼:
Page({
onTabItemTap(item) {
console.log(item.index)
console.log(item.pagePath)
console.log(item.text)
}
})
組件事件處理函數(shù)
Page 中還可以定義組件事件處理函數(shù)。在渲染層的組件中加入事件綁定,當(dāng)事件被觸發(fā)時,就會執(zhí)行 Page 中定義的事件處理函數(shù)。
示例代碼:
在開發(fā)者工具中預(yù)覽效果
click me
Page({
viewTap: function() {
console.log('view tap')
}
})
Page.route
基礎(chǔ)庫 1.2.0 開始支持,低版本需做兼容處理。
到當(dāng)前頁面的路徑,類型為String。
Page({
onShow: function() {
console.log(this.route)
}
})
Page.prototype.setData(Object data, Function callback)
setData 函數(shù)用于將數(shù)據(jù)從邏輯層發(fā)送到視圖層(異步),同時改變對應(yīng)的 this.data 的值(同步)。
參數(shù)說明
| 字段 | 類型 | 必填 | 描述 | 最低版本 |
|---|---|---|---|---|
| data | Object | 是 | 這次要改變的數(shù)據(jù) | |
| callback | Function | 否 | setData引起的界面更新渲染完畢后的回調(diào)函數(shù) | 1.5.0 |
Object 以 key: value 的形式表示,將 this.data 中的 key 對應(yīng)的值改變成 value。
其中 key 可以以數(shù)據(jù)路徑的形式給出,支持改變數(shù)組中的某一項或?qū)ο蟮哪硞€屬性,如 array[2].message,a.b.c.d,并且不需要在 this.data 中預(yù)先定義。
注意:
- 直接修改 this.data 而不調(diào)用 this.setData 是無法改變頁面的狀態(tài)的,還會造成數(shù)據(jù)不一致。
- 僅支持設(shè)置可 JSON 化的數(shù)據(jù)。
- 單次設(shè)置的數(shù)據(jù)不能超過1024kB,請盡量避免一次設(shè)置過多的數(shù)據(jù)。
- 請不要把 data 中任何一項的 value 設(shè)為 undefined ,否則這一項將不被設(shè)置并可能遺留一些潛在問題。
示例代碼:
在開發(fā)者工具中預(yù)覽效果
{{text}}
{{num}}
{{array[0].text}}
{{object.text}}
{{newField.text}}
// index.js
Page({
data: {
text: 'init data',
num: 0,
array: [{text: 'init data'}],
object: {
text: 'init data'
}
},
changeText: function() {
// this.data.text = 'changed data' // 不要直接修改 this.data
// 應(yīng)該使用 setData
this.setData({
text: 'changed data'
})
},
changeNum: function() {
// 或者,可以修改 this.data 之后馬上用 setData 設(shè)置一下修改了的字段
this.data.num = 1
this.setData({
num: this.data.num
})
},
changeItemInArray: function() {
// 對于對象或數(shù)組字段,可以直接修改一個其下的子字段,這樣做通常比修改整個對象或數(shù)組更好
this.setData({
'array[0].text':'changed data'
})
},
changeItemInObject: function(){
this.setData({
'object.text': 'changed data'
});
},
addNewField: function() {
this.setData({
'newField.text': 'new data'
})
}
})
頁面間通信
基礎(chǔ)庫 2.7.3 開始支持,低版本需做兼容處理。
如果一個頁面由另一個頁面通過 wx.navigateTo 打開,這兩個頁面間將建立一條數(shù)據(jù)通道:
- 被打開的頁面可以通過 this.getOpenerEventChannel() 方法來獲得一個 EventChannel 對象;
- wx.navigateTo 的 success 回調(diào)中也包含一個 EventChannel 對象。
這兩個 EventChannel 對象間可以使用 emit 和 on 方法相互發(fā)送、監(jiān)聽事件。
PageObject[] getCurrentPages()
獲取當(dāng)前頁面棧。數(shù)組中第一個元素為首頁,最后一個元素為當(dāng)前頁面。
注意:
- 不要嘗試修改頁面棧,會導(dǎo)致路由以及頁面狀態(tài)錯誤。
- 不要在 App.onLaunch 的時候調(diào)用 getCurrentPages(),此時 page 還沒有生成。
當(dāng)前文章:創(chuàng)新互聯(lián)小程序教程:微信小程序頁面
網(wǎng)頁地址:http://m.5511xx.com/article/copegip.html


咨詢
建站咨詢
