当前阅读教程:微信小程序入门教程 > 注册页面 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
阅读(22555525) 收藏 赞(5685) 分享 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上一篇: 场景值 | 下一篇: 路由 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1.页面 Page函数Page(Object) 函数用来注册一个页面。接受一个 Object 类型参数,指定页面的初始数据、生命周期回调、事件处理函数等。Object 参数说明参见表2-13。 表2-13 Object 参数
代码示例 如下: //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. }, 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' } }) 除了Page ,作为高级用法,页面可以像自定义组件一样使用 Component 来创建,这样就可以使用自定义组件的特性。 2.初始数据datadata 是页面第一次渲染使用的初始数据。页面加载时,data 将会以JSON字符串的形式由逻辑层传至渲染层,因此data中的数据必须是可以转成JSON的类型:字符串、数字、布尔值、对象、数组。 渲染层可以通过 WXML 对数据进行绑定。代码示例 如下: <view>{{text}}</view> <view>{{array[0].msg}}</view>
Page({ data: { text: 'init data', array: [{msg: '1'}, {msg: '2'}] } }) 3.生命周期回调函数onLoad(Object query)页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。 参数说明如下:
onShow()页面显示/切入前台时触发。 onReady()页面初次渲染完成时触发。一个页面只会调用一次,该函数执行完毕代表页面已经准备妥当,可以和视图层进行交互。 注意:对界面内容进行设置的 API 如wx.setNavigationBarTitle,请在onReady之后进行。 onHide()页面隐藏/切入后台时触发。如 navigateTo 或底部 tab 切换到其他页面,小程序切入后台等。 onUnload()页面卸载时触发,如redirectTo或navigateBack到其他页面时。 4.页面事件处理函数(1)onPullDownRefresh()监听用户下拉刷新事件。需要在app.json的window选项中或页面配置中开启enablePullDownRefresh。可以通过wx.startPullDownRefresh触发下拉刷新,调用后触发下拉刷新动画,效果与用户手动下拉刷新一致。当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。 (2)onReachBottom()监听用户上拉触底事件。可以在app.json的window选项中或页面配置中设置触发距离onReachBottomDistance。在触发距离内滑动期间,本事件只会被触发一次。 (3)onPageScroll(Object)监听用户滑动页面事件。Object 参数说明:
(4)onShareAppMessage(Object)监听用户点击页面内转发按钮(<button> 组件 open-type="share")或右上角菜单“转发”按钮的行为,并自定义转发内容。 注意:只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮。 Object 参数说明如下:
此事件需要 return 一个 Object,用于自定义转发内容,返回内容如下:
代码示例 如下: Page({ onShareAppMessage: function (res) { if (res.from === 'button') { // 来自页面内转发按钮 console.log(res.target) } return { title: '自定义转发标题', path: '/page/user?id=123' } } }) (5)onTabItemTap(Object)基础库 1.9.0 开始支持,低版本需做兼容处理。点击 tab 时触发。Object 参数说明如下:
代码示例 如下: Page({ onTabItemTap(item) { console.log(item.index) console.log(item.pagePath) console.log(item.text) } }) 5.组件事件处理函数Page 中还可以定义组件事件处理函数。在渲染层的组件中加入事件绑定,当事件被触发时,就会执行 Page 中定义的事件处理函数。 代码示例 如下: <view bindtap="viewTap"> click me </view>
Page({ viewTap: function() { console.log('view tap') } }) 6.routePage.route表示到当前页面的路径,类型为String,基础库 1.2.0 开始支持,低版本需做兼容处理。代码示例 如下: Page({ onShow: function() { console.log(this.route) } }) 7.setDataPage.prototype.setData(Object data, Function callback)函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。参数说明如下:
Object 以 key: value 的形式表示,将 this.data 中的 key 对应的值改变成 value。 其中 key 可以用数据路径的形式给出,支持改变数组中的某一项或对象的某个属性,如 array[2].message,a.b.c.d,并且不需要在 this.data 中预先定义。 注意: l 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。 l 仅支持设置可 JSON 化的数据。单次设置的数据不能超过1024kb,请尽量避免一次设置过多的数据。请不要把 data 中任何一项的 value 设为 undefined ,否则这一项将不被设置并可能遗留一些潜在问题。 代码示例 如下: <!--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 // 应该使用 setData this.setData({ text: 'changed data' }) }, changeNum: function() { // 或者,可以修改 this.data 之后马上用 setData 设置一下修改了的字段 this.data.num = 1 this.setData({ num: this.data.num }) }, changeItemInArray: function() { // 对于对象或数组字段,可以直接修改一个其下的子字段,这样做通常比修改整个对象或数组更好 this.setData({ 'array[0].text':'changed data' }) }, changeItemInObject: function(){ this.setData({ 'object.text': 'changed data' }); }, addNewField: function() { this.setData({ 'newField.text': 'new data' }) } }) 生命周期不需要立马完全理解生命周期,不过以后会帮助你理解开发。图2-3说明了 Page 实例的生命周期。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
上一篇: 场景值 | 下一篇: 路由 |