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


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 相关文章推荐
JavaScript 事件参考手册
Dec 24 Javascript
浅谈Javascript如何实现匀速运动
Dec 19 Javascript
javascript显式类型转换实例分析
Apr 25 Javascript
详解JavaScript对象和数组
Dec 03 Javascript
JavaScript程序设计之JS调试
Dec 09 Javascript
Angularjs整合微信UI(weui)
Mar 15 Javascript
Javascript 事件冒泡机制详细介绍
Oct 10 Javascript
bootstrapValidator.min.js表单验证插件
Feb 09 Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 Javascript
vue-cli项目中使用echarts图表实例
Oct 22 Javascript
Vue 一键清空表单的实现方法
Feb 07 Javascript
JavaScript继承的三种方法实例
May 12 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
深入了解php4(2)--重访过去
2006/10/09 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php实现把url转换迅雷thunder资源下载地址的方法
2014/11/07 PHP
php中JSON的使用方法
2015/04/30 PHP
php如何获取文件的扩展名
2015/10/28 PHP
PHP+MySql+jQuery实现的&quot;顶&quot;和&quot;踩&quot;投票功能
2016/05/21 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
javascript Array对象基础知识小结
2010/11/16 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
JavaScript中两个字符串的匹配
2016/06/08 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
python实现log日志的示例代码
2018/04/28 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
pycharm创建一个python包方法图解
2019/04/10 Python
使用python获取(宜宾市地震信息)地震信息
2019/06/20 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
使用CSS3制作倾斜导航条和毛玻璃效果
2017/09/12 HTML / CSS
日本最大的药妆连锁店:Matsukiyo松本清药妆店
2017/11/23 全球购物
适用于所有创业者的创业计划书
2014/02/05 职场文书
给老师的检讨书
2014/02/11 职场文书
星级党支部申报材料
2014/05/31 职场文书
大学专科自荐信
2014/06/17 职场文书
自动化专业大学生职业生涯规划范文:爱拚才会赢
2014/09/12 职场文书
教师个人学习总结
2015/02/11 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript