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


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返回顶部实例分享
Dec 21 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
Jan 06 Javascript
JS中input表单隐藏域及其使用方法
Feb 13 Javascript
浅谈对Angular中的生命周期钩子的理解
Jul 31 Javascript
js链表操作(实例讲解)
Aug 29 Javascript
Vue实现移动端左右滑动效果的方法
Nov 27 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
May 18 Javascript
JavaScript监听触摸事件代码实例
Dec 30 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
Jul 26 Javascript
Postman内建变量常用方法实例解析
Jul 28 Javascript
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
微信小程序 教程之注册程序
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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
解决php表单重复提交实现方法
2015/09/29 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
jquery判断浏览器后退时候弹出消息的方法
2014/08/11 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
node.js中的fs.lchmod方法使用说明
2014/12/16 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
[46:03]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
使用PYTHON创建XML文档
2012/03/01 Python
python连接mongodb操作数据示例(mongodb数据库配置类)
2013/12/31 Python
python3 shelve模块的详解
2017/07/08 Python
Python学生信息管理系统修改版
2018/03/13 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
python实现简易淘宝购物
2019/11/22 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
澳大利亚在线生活方式商店:Mytopia
2018/07/08 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
摄影专业毕业生求职信
2014/08/05 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
2015大学生暑期实习报告
2015/07/13 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书
MYSQL 运算符总结
2021/11/11 MySQL