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


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 相关文章推荐
CheckBox 如何实现全选?
Jun 23 Javascript
JavaScript RegExp方法获取地址栏参数(面向对象)
Mar 10 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
Feb 05 Javascript
js判断客户端是iOS还是Android等移动终端的方法
Dec 11 Javascript
点评js异步加载的4种方式
Dec 22 Javascript
js实现按钮控制带有停顿效果的图片滚动
Aug 30 Javascript
javascript 网页进度条简单实例
Feb 22 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
Sep 20 jQuery
jQuery实现的记住帐号密码功能完整示例
Aug 03 jQuery
JS实现图片懒加载(lazyload)过程详解
Apr 02 Javascript
VueCli4项目配置反向代理proxy的方法步骤
May 17 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
Jul 31 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的十大要点(上)
2009/02/04 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
jQuery抛物线运动实现方法(附完整demo源码下载)
2016/01/08 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
关于vue.js弹窗组件的知识点总结
2016/09/11 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
javaScript嗅探执行神器-sniffer.js
2017/02/14 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
jquery中关于bind()方法的使用技巧分享
2017/03/30 jQuery
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
python学习数据结构实例代码
2015/05/11 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
Python实现k-means算法
2018/02/23 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
python爬虫增加访问量的方法
2019/08/22 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
澳大利亚珍珠首饰购物网站:Vayo Pearls
2019/03/11 全球购物
新员工培训个人的自我评价
2013/10/09 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
联谊活动总结范文
2015/05/09 职场文书