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


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 相关文章推荐
Javasipt:操作radio标签详解
Dec 30 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
Sep 08 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
jquery实现无刷新验证码的简单实例
May 19 Javascript
AngularJs自定义服务之实现签名和加密
Aug 02 Javascript
js实现上传并压缩图片效果
Jan 10 Javascript
Angular4 ElementRef的应用
Feb 26 Javascript
Vue前端开发规范整理(推荐)
Apr 23 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
Dec 11 Javascript
Vue 解决多级动态面包屑导航的问题
Nov 04 Javascript
js实现飞机大战小游戏
Aug 26 Javascript
如何使用JS console.log()技巧提高工作效率
Oct 14 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
php强制下载类型的实现代码
2011/04/21 PHP
解析php安全性问题中的:Null 字符问题
2013/06/21 PHP
php实现统计二进制中1的个数算法示例
2018/01/23 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
2018/05/21 PHP
js 分栏效果实现代码
2009/08/29 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
php常见的页面跳转方法汇总
2015/04/15 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
JavaScript实现256色转灰度图
2017/02/22 Javascript
利用Node.js批量抓取高清妹子图片实例教程
2018/08/02 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
jquery.pager.js实现分页效果
2019/07/29 jQuery
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
python del()函数用法
2013/03/24 Python
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python正则表达式经典入门教程
2017/05/22 Python
Python爬取个人微信朋友信息操作示例
2018/08/03 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
餐饮商业计划书范文
2014/04/29 职场文书
留学经费担保书
2014/05/12 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
英雄儿女观后感
2015/06/09 职场文书
趣味运动会简讯
2015/07/20 职场文书
《春酒》教学反思
2016/02/22 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python