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


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 相关文章推荐
ExtJS 2.0实用简明教程 之ExtJS版的Hello
Apr 29 Javascript
jquery 问答知识整理
Feb 11 Javascript
UserData用法总结 lanyu出品
Jul 01 Javascript
setInterval与clearInterval的使用示例代码
Jan 28 Javascript
jQuery自带的一些常用方法总结
Sep 03 Javascript
通过实例理解javascript中没有函数重载的概念
Jun 03 Javascript
JavaScript组件开发完整示例
Dec 15 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
Feb 23 Javascript
微信小程序实现发送验证码按钮效果
Dec 20 Javascript
小程序多图列表实现性能优化的方法步骤
May 28 Javascript
vue分页器组件编写方法详解
Jun 28 Javascript
全网小程序接口请求封装实例代码
Nov 06 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
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
PHP单元测试框架PHPUnit用法详解
2019/01/23 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
vue实现节点增删改功能
2019/09/26 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
Python set集合类型操作总结
2014/11/07 Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
2015/03/19 Python
详解Python的Django框架中的通用视图
2015/05/04 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
使用python和pygame绘制繁花曲线的方法
2018/02/24 Python
查看python下OpenCV版本的方法
2018/08/03 Python
将Python文件打包成.EXE可执行文件的方法
2019/08/11 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python实现分数序列求和
2020/02/25 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
美国韩国化妆品和护肤品购物网站:Beautytap
2018/07/29 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
别名指示符是什么
2012/10/08 面试题
应届生幼儿园求职信
2013/11/12 职场文书
信息专业个人的自我评价
2013/12/27 职场文书
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
节能环保口号
2014/06/12 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
前台接待岗位职责
2015/02/03 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
MongoDB orm框架的注意事项及简单使用
2021/06/20 MongoDB
Python 阶乘详解
2021/10/05 Python
nginx常用配置conf的示例代码详解
2022/03/21 Servers