微信小程序 教程之注册页面


Posted in Javascript onOctober 17, 2016

系列文章:

微信小程序——Page

Page()函数用来注册一个页面。接受一个object参数,其指定页面的初始数据、生命周期函数、事件处理函数等。

object参数说明:

属性 类型 描述
data Object 页面的初始数据
onLoad Function 生命周期函数--监听页面加载
onReady Function 生命周期函数--监听页面渲染完成
onShow Function 生命周期函数--监听页面显示
onHide Function 生命周期函数--监听页面隐藏
onUnload Function 生命周期函数--监听页面卸载
其他 Any 开发者可以添加任意的函数或数据到Object参数中,用this可以访问

示例代码:

//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.
 },
 // Event handler.
 viewTap: function() {
 this.setData({
  text: 'Set some data for updating view.'
 })
 }
})

初始化数据

初始化数据将作为页面的第一次渲染。data将会以JSON的形式由逻辑层传至渲染层,所以其数据必须是可以转成JSON的格式:字符串,数字,布尔值,对象,数组。

渲染层可以通过WXML对数据进行绑定。

示例代码:

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

事件处理函数

​ 除了初始化数据和生命周期函数,Page中还可以定义一些特殊的函数:事件处理函数。在渲染层可以在组件中加入事件绑定,当达到触发事件时,就会执行Page中定义的事件处理函数。

示例代码:

<view bindtap="viewTap"> click me </view>

Page({
 viewTap: function() {
 console.log('view tap')
 }
})

Page.prototype.setData()

setData函数用于将数据从逻辑层发送到视图层,同时改变对应的this.data的值。

注意:

直接修改this.data无效,无法改变页面的状态,还会造成数据不一致。
单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

setData()参数格式

接受一个对象,以key,value的形式表示将this.data中的key对应的值改变成value。
其中key可以非常灵活,以数据路径的形式给出,如array[2].message,a.b.c.d,并且不需要在this.data中预先定义。

示例代码:

<!--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'
 })
 }
})

以下内容你不需要立马完全弄明白,不过以后它会有帮助。

生命周期函数

下图说明了Page实例的生命周期。

微信小程序 教程之注册页面

页面的路由

在小程序中所有页面的路由全部由框架进行管理,对于路由的触发方式以及页面生命周期函数如下:

路由方式 触发时机 路由后页面 路由前页面
初始化 小程序打开的第一个页面 onLoad,onShow  
打开新页面 调用 API wx.navigateTo或使用组件  onLoad,onShow onHide
页面重定向 调用 API wx.redirectTo或使用组件  onLoad,onShow onUnload
页面返回 调用 API wx.navigateBack或用户按左上角返回按钮 onShow onUnload
Tab切换 多 Tab 模式下用户切换 Tab 第一次打开 onLoad,onshow;否则 onShow onHide

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
Nov 25 Javascript
javascript 实现 原路返回
Jan 21 Javascript
javascript继承的六大模式小结
Apr 13 Javascript
详解JavaScript中localStorage使用要点
Jan 13 Javascript
基于canvas实现的钟摆效果完整实例
Jan 26 Javascript
解析浏览器端的AJAX缓存机制
Jun 21 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
详解angularjs的数组传参方式的简单实现
Jul 28 Javascript
vue组件生命周期详解
Nov 07 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
Aug 18 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
Sep 18 Javascript
微信小程序 教程之注册程序
Oct 17 #Javascript
微信小程序 教程之小程序配置
Oct 17 #Javascript
jQuery事件对象总结
Oct 17 #Javascript
微信小程序 MINA文件结构
Oct 17 #Javascript
Jquery实现上下移动和排序代码
Oct 17 #Javascript
微信小程序 Page()函数详解
Oct 17 #Javascript
微信小程序 触控事件详细介绍
Oct 17 #Javascript
You might like
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
浅析JQuery UI Dialog的样式设置问题
2013/12/18 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
基于jquery实现弹幕效果
2016/09/29 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
Vue.js仿微信聊天窗口展示组件功能
2017/08/11 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
2020/07/24 Javascript
跟老齐学Python之关于类的初步认识
2014/10/11 Python
python 统计代码行数简单实例
2017/05/04 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python3 kubernetes api的使用示例
2021/01/12 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
红领巾广播站广播稿
2014/02/01 职场文书
一名老师的自我评价
2014/02/07 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
跳槽求职信范文
2014/05/26 职场文书
最美乡村医生事迹材料
2014/06/02 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
小学班主任个人总结
2015/03/03 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
出生证明格式
2015/06/15 职场文书
社区结对共建协议书
2016/03/23 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
使用Mysql计算地址的经纬度距离和实时位置信息
2022/04/29 MySQL