W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
注冊(cè)小程序中的一個(gè)頁(yè)面。接受一個(gè) Object 類型參數(shù),其指定頁(yè)面的初始數(shù)據(jù)、生命周期回調(diào)、事件處理函數(shù)等。
屬性 | 類型 | 默認(rèn)值 | 必填 | 說(shuō)明 |
---|---|---|---|---|
data | Object | 頁(yè)面的初始數(shù)據(jù) | ||
onLoad | function | 生命周期回調(diào)—監(jiān)聽頁(yè)面加載 | ||
onShow | function | 生命周期回調(diào)—監(jiān)聽頁(yè)面顯示 | ||
onReady | function | 生命周期回調(diào)—監(jiān)聽頁(yè)面初次渲染完成 | ||
onHide | function | 生命周期回調(diào)—監(jiān)聽頁(yè)面隱藏 | ||
onUnload | function | 生命周期回調(diào)—監(jiān)聽頁(yè)面卸載 | ||
onPullDownRefresh | function | 監(jiān)聽用戶下拉動(dòng)作 | ||
onReachBottom | function | 頁(yè)面上拉觸底事件的處理函數(shù) | ||
onShareAppMessage | function | 用戶點(diǎn)擊右上角轉(zhuǎn)發(fā) | ||
onShareTimeline | function | 用戶點(diǎn)擊右上角轉(zhuǎn)發(fā)到朋友圈 | ||
onAddToFavorites | function | 用戶點(diǎn)擊右上角收藏 | ||
onPageScroll | function | 頁(yè)面滾動(dòng)觸發(fā)事件的處理函數(shù) | ||
onResize | function | 頁(yè)面尺寸改變時(shí)觸發(fā),詳見 響應(yīng)顯示區(qū)域變化 | ||
onTabItemTap | function | 當(dāng)前是 tab 頁(yè)時(shí),點(diǎn)擊 tab 時(shí)觸發(fā) | ||
其他 | any | 開發(fā)者可以添加任意的函數(shù)或數(shù)據(jù)到 Object 參數(shù)中,在頁(yè)面的函數(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 是頁(yè)面第一次渲染使用的初始數(shù)據(jù)。
頁(yè)面加載時(shí),data 將會(huì)以JSON字符串的形式由邏輯層傳至渲染層,因此data中的數(shù)據(jù)必須是可以轉(zhuǎn)成JSON的類型:字符串,數(shù)字,布爾值,對(duì)象,數(shù)組。
渲染層可以通過 WXML 對(duì)數(shù)據(jù)進(jìn)行綁定。
示例代碼:
在開發(fā)者工具中預(yù)覽效果
<view>{{text}}</view>
<view>{{array[0].msg}}</view>
Page({
data: {
text: 'init data',
array: [{msg: '1'}, {msg: '2'}]
}
})
生命周期的觸發(fā)以及頁(yè)面的路由方式詳見
頁(yè)面加載時(shí)觸發(fā)。一個(gè)頁(yè)面只會(huì)調(diào)用一次,可以在 onLoad 的參數(shù)中獲取打開當(dāng)前頁(yè)面路徑中的參數(shù)。
參數(shù):
名稱 | 類型 | 說(shuō)明 |
---|---|---|
query | Object | 打開當(dāng)前頁(yè)面路徑中的參數(shù) |
頁(yè)面顯示/切入前臺(tái)時(shí)觸發(fā)。
頁(yè)面初次渲染完成時(shí)觸發(fā)。一個(gè)頁(yè)面只會(huì)調(diào)用一次,代表頁(yè)面已經(jīng)準(zhǔn)備妥當(dāng),可以和視圖層進(jìn)行交互。
注意:對(duì)界面內(nèi)容進(jìn)行設(shè)置的 API 如wx.setNavigationBarTitle,請(qǐng)?jiān)趏nReady之后進(jìn)行。詳見生命周期
頁(yè)面隱藏/切入后臺(tái)時(shí)觸發(fā)。 如 wx.navigateTo 或底部 tab 切換到其他頁(yè)面,小程序切入后臺(tái)等。
頁(yè)面卸載時(shí)觸發(fā)。如wx.redirectTo或wx.navigateBack到其他頁(yè)面時(shí)。
監(jiān)聽用戶下拉刷新事件。
監(jiān)聽用戶上拉觸底事件。
監(jiān)聽用戶滑動(dòng)頁(yè)面事件。
參數(shù) Object object:
屬性 | 類型 | 說(shuō)明 |
---|---|---|
scrollTop | Number | 頁(yè)面在垂直方向已滾動(dòng)的距離(單位px) |
注意:請(qǐng)只在需要的時(shí)候才在 page 中定義此方法,不要定義空方法。以減少不必要的事件派發(fā)對(duì)渲染層-邏輯層通信的影響。 注意:請(qǐng)避免在 onPageScroll 中過于頻繁的執(zhí)行 setData 等引起邏輯層-渲染層通信的操作。尤其是每次傳輸大量數(shù)據(jù),會(huì)影響通信耗時(shí)。
本接口為 Beta 版本,安卓 7.0.15 版本起支持,暫只在安卓平臺(tái)支持
監(jiān)聽用戶點(diǎn)擊右上角菜單“收藏”按鈕的行為,并自定義收藏內(nèi)容。
參數(shù) Object object:
參數(shù) | 類型 | 說(shuō)明 |
---|---|---|
webviewUrl | String | 頁(yè)面中包含web-view組件時(shí),返回當(dāng)前web-view的url |
此事件處理函數(shù)需要 return 一個(gè) Object,用于自定義收藏內(nèi)容:
字段 | 說(shuō)明 | 默認(rèn)值 |
---|---|---|
title | 自定義標(biāo)題 | 頁(yè)面標(biāo)題或賬號(hào)名稱 |
imageUrl | 自定義圖片,顯示圖片長(zhǎng)寬比為 1:1 | 頁(yè)面截圖 |
query | 自定義query字段 | 當(dāng)前頁(yè)面的query |
示例代碼
Page({
onAddToFavorites(res) {
// webview 頁(yè)面返回 webviewUrl
console.log('WebviewUrl: ', res.webviewUrl)
return {
title: '自定義標(biāo)題',
imageUrl: 'http://demo.png',
query: 'name=xxx&age=xxx',
}
}
})
監(jiān)聽用戶點(diǎn)擊頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕(button 組件 open-type="share")或右上角菜單“轉(zhuǎn)發(fā)”按鈕的行為,并自定義轉(zhuǎn)發(fā)內(nèi)容。
注意:只有定義了此事件處理函數(shù),右上角菜單才會(huì)顯示“轉(zhuǎn)發(fā)”按鈕
參數(shù) Object object:
參數(shù) | 類型 | 說(shuō)明 | 最低版本 |
---|---|---|---|
from | String | 轉(zhuǎn)發(fā)事件來(lái)源。
button :頁(yè)面內(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 | 頁(yè)面中包含web-view組件時(shí),返回當(dāng)前web-view的url | 1.6.4 |
此事件處理函數(shù)需要 return 一個(gè) Object,用于自定義轉(zhuǎn)發(fā)內(nèi)容,返回內(nèi)容如下:
自定義轉(zhuǎn)發(fā)內(nèi)容 基礎(chǔ)庫(kù) 2.8.1 起,分享圖支持云圖片。
字段 | 說(shuō)明 | 默認(rèn)值 | 最低版本 |
---|---|---|---|
title | 轉(zhuǎn)發(fā)標(biāo)題 | 當(dāng)前小程序名稱 | |
path | 轉(zhuǎn)發(fā)路徑 | 當(dāng)前頁(yè)面 path ,必須是以 / 開頭的完整路徑 | |
imageUrl | 自定義圖片路徑,可以是本地文件路徑、代碼包文件路徑或者網(wǎng)絡(luò)圖片路徑。支持PNG及JPG。顯示圖片長(zhǎng)寬比是 5:4。 | 使用默認(rèn)截圖 | 1.5.0 |
示例代碼
在開發(fā)者工具中預(yù)覽效果
Page({
onShareAppMessage: function (res) {
if (res.from === 'button') {
// 來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕
console.log(res.target)
}
return {
title: '自定義轉(zhuǎn)發(fā)標(biāo)題',
path: '/page/user?id=123'
}
}
})
基礎(chǔ)庫(kù) 2.11.3 開始支持,低版本需做兼容處理。
本接口為 Beta 版本,暫只在 Android 平臺(tái)支持,詳見分享到朋友圈 (Beta)
監(jiān)聽右上角菜單“分享到朋友圈”按鈕的行為,并自定義發(fā)享內(nèi)容。
注意:只有定義了此事件處理函數(shù),右上角菜單才會(huì)顯示“分享到朋友圈”按鈕
自定義轉(zhuǎn)發(fā)內(nèi)容
事件處理函數(shù)返回一個(gè) Object,用于自定義分享內(nèi)容,不支持自定義頁(yè)面路徑,返回內(nèi)容如下:
字段 | 說(shuō)明 | 默認(rèn)值 | 最低版本 |
---|---|---|---|
title | 自定義標(biāo)題,即朋友圈列表頁(yè)上顯示的標(biāo)題 | 當(dāng)前小程序名稱 | |
query | 自定義頁(yè)面路徑中攜帶的參數(shù),如 path?a=1&b=2 的 “?” 后面部分 | 當(dāng)前頁(yè)面路徑攜帶的參數(shù) | |
imageUrl | 自定義圖片路徑,可以是本地文件或者網(wǎng)絡(luò)圖片。支持 PNG 及 JPG,顯示圖片長(zhǎng)寬比是 1:1。 | 默認(rèn)使用小程序 Logo |
基礎(chǔ)庫(kù) 2.4.0 開始支持,低版本需做兼容處理。
小程序屏幕旋轉(zhuǎn)時(shí)觸發(fā)。詳見 響應(yīng)顯示區(qū)域變化
基礎(chǔ)庫(kù) 1.9.0 開始支持,低版本需做兼容處理。
點(diǎn)擊 tab 時(shí)觸發(fā)
Object 參數(shù)說(shuō)明:
參數(shù) | 類型 | 說(shuō)明 | 最低版本 |
---|---|---|---|
index | String | 被點(diǎn)擊tabItem的序號(hào),從0開始 | 1.9.0 |
pagePath | String | 被點(diǎn)擊tabItem的頁(yè)面路徑 | 1.9.0 |
text | String | 被點(diǎn)擊tabItem的按鈕文字 | 1.9.0 |
示例代碼:
Page({
onTabItemTap(item) {
console.log(item.index)
console.log(item.pagePath)
console.log(item.text)
}
})
Page 中還可以定義組件事件處理函數(shù)。在渲染層的組件中加入事件綁定,當(dāng)事件被觸發(fā)時(shí),就會(huì)執(zhí)行 Page 中定義的事件處理函數(shù)。
示例代碼:
在開發(fā)者工具中預(yù)覽效果
<view bindtap="viewTap"> click me </view>
Page({
viewTap: function() {
console.log('view tap')
}
})
基礎(chǔ)庫(kù) 1.2.0 開始支持,低版本需做兼容處理。
到當(dāng)前頁(yè)面的路徑,類型為String。
Page({
onShow: function() {
console.log(this.route)
}
})
setData 函數(shù)用于將數(shù)據(jù)從邏輯層發(fā)送到視圖層(異步),同時(shí)改變對(duì)應(yīng)的 this.data 的值(同步)。
字段 | 類型 | 必填 | 描述 | 最低版本 |
---|---|---|---|---|
data | Object | 是 | 這次要改變的數(shù)據(jù) | |
callback | Function | 否 | setData引起的界面更新渲染完畢后的回調(diào)函數(shù) | 1.5.0 |
Object 以 key: value 的形式表示,將 this.data 中的 key 對(duì)應(yīng)的值改變成 value。
其中 key 可以以數(shù)據(jù)路徑的形式給出,支持改變數(shù)組中的某一項(xiàng)或?qū)ο蟮哪硞€(gè)屬性,如 array[2].message,a.b.c.d,并且不需要在 this.data 中預(yù)先定義。
注意:
示例代碼:
在開發(fā)者工具中預(yù)覽效果
<!--index.wxml-->
<view>{{text}}</view>
<button bindtap="changeText"> Change normal data </button>
<view>{{num}}</view>
<button bindtap="changeNum"> Change normal num </button>
<view>{{array[0].text}}</view>
<button bindtap="changeItemInArray"> Change Array data </button>
<view>{{object.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',
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() {
// 對(duì)于對(duì)象或數(shù)組字段,可以直接修改一個(gè)其下的子字段,這樣做通常比修改整個(gè)對(duì)象或數(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ǔ)庫(kù) 2.7.3 開始支持,低版本需做兼容處理。
如果一個(gè)頁(yè)面由另一個(gè)頁(yè)面通過 wx.navigateTo 打開,這兩個(gè)頁(yè)面間將建立一條數(shù)據(jù)通道:
這兩個(gè) EventChannel 對(duì)象間可以使用 emit 和 on 方法相互發(fā)送、監(jiān)聽事件。
獲取當(dāng)前頁(yè)面棧。數(shù)組中第一個(gè)元素為首頁(yè),最后一個(gè)元素為當(dāng)前頁(yè)面。
注意:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: