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


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 相关文章推荐
在图片上显示左右箭头类似翻页的代码
Mar 04 Javascript
详解jQuery插件开发中的extend方法
Nov 19 Javascript
自己用jQuery写了一个图片的马赛克消失效果
May 04 Javascript
创建你的第一个AngularJS应用的方法
Jun 16 Javascript
javascript实现网页背景烟花效果的方法
Aug 06 Javascript
jquery可定制的在线UEditor编辑器
Nov 17 Javascript
微信小程序利用co处理异步流程的方法教程
May 20 Javascript
Underscore之Array_动力节点Java学院整理
Jul 10 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
Nov 22 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
微信小程序实现留言功能
Oct 31 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 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静态成员变量
2017/02/14 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
PHP cookie与session会话基本用法实例分析
2019/11/18 PHP
JQuery通过Ajax提交表单并返回结果
2011/07/31 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
加载 vue 远程代码的组件实例详解
2017/11/20 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
一些常用的Python爬虫技巧汇总
2016/09/28 Python
import的本质解析
2017/10/30 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
Python request使用方法及问题总结
2020/04/26 Python
解决django 向mysql中写入中文字符出错的问题
2020/05/18 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
python中re模块知识点总结
2021/01/17 Python
HTML5中的进度条progress元素简介及兼容性处理
2016/06/02 HTML / CSS
linux面试题参考答案(4)
2013/01/28 面试题
企业为何需要商业计划书
2013/12/26 职场文书
六个一活动实施方案
2014/03/21 职场文书
世界读书日的活动方案
2014/08/20 职场文书
小学向国旗敬礼活动方案
2014/09/27 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
仙境之桥观后感
2015/06/16 职场文书
新娘婚礼致辞
2015/07/27 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书