微信小程序中的Page

Page()定义在js文件中,Page() 函数用来注册一个页面。

Page()函数接受一个 object 参数,其指定页面的初始数据、生命周期函数、事件处理函数等。

object参数为:

怎么理解Page()函数接受一个 object 参数??

形如:Page({data,onLoad,onReady,...}),其中data,onLoad,onReady都是page的参数。

举个例子,比如,可以这样写:

Page({ data: {    text: "This is page data."  },  onLoad: function(options) {},  onReady: function() {},  onShow: function() {},onHide: function() {},  onUnload: function() {},  onPullDownRefresh: function() {}
})

变换为如下形式,也可以:

Page({data: {    text: "This is page data."  },onLoad: function(options) {},onReady: function() {},onShow: function() {},onHide: function() {},onUnload: function() {},onPullDownRefresh: function() {}
})

最后,(最美观):

//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.},onPullDownRefresh: function() {// Do something when pull down.},onReachBottom: function() {// Do something when page reach bottom.},onShareAppMessage: function () {// return custom share data when user share.},onPageScroll: function() {// Do something when page scroll}
})

也就是在js里的代码形式。

初始化数据

页面中的data数据会以JSON的形式由逻辑层(js)到渲染层。所以,数据组织形式能转换为JSON格式。如,字符串,数字,布尔值,对象,数组。

示例代码:

<view>{{text}}</view>
<view>{{array[0].msg}}</view>
<-- js -->
Page({data: {text: 'init data',array: [{msg: '1'}, {msg: '2'}]}
})


页面生命周期函数

(1)onLoad

页面加载,一个页面只会调用一次,可以在 onLoad 中获取打开当前页面所调用的 query 参数。

onLoad的参数为object:

(2)onShow

页面显示,每次打开页面都会显示

(3)onReady

页面初次渲染完成, 一个页面只会调用一次,可以和视图层进行交互。

(4)onHide

页面隐藏,tab切换时。

(5)onUnload

页面卸载。

页面相关事件处理函数

(1)onPullDownRefresh:下拉刷新

说明:监听用户下拉刷新事件

监听用户下拉刷新事件。

需要在app.json的window选项中或页面配置中开启enablePullDownRefresh。

当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。

(2)onReachBottom:上拉触底

监听用户上拉触底事件。
可以在app.json的window选项中或页面配置中设置触发距离onReachBottomDistance。

在触发距离内滑动期间,本事件只会被触发一次。

(3)onPageScroll: 页面滚动

监听用户滑动页面事件。
参数为 Object,包含以下字段:

(4)onShareAppMessage: 用户转发

只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮

用户点击转发按钮的时候会调用

此事件需要 return 一个 Object,用于自定义转发内容

自定义转发内容:

实例代码:

Page({onShareAppMessage: function () {return {title: '自定义转发标题',path: '/page/user?id=123'}}
})

事件处理函数:(页面点击,js执行逻辑)

简单来说,就是你在页面上操作,页面对你的操作有回应。

<view bindtap="viewTap"> click me </view>
Page({viewTap: function() {console.log('view tap')}
})

参数

Page.prototype.route

route 字段可以获取到当前页面的路径。

Page.prototype.setData()

setData 函数(异步模式)将数据从逻辑层(JS)发送到视图层(WXML),同时(同步,或立刻)改变对应的 this.data 的值。

setData()参数:

说明:

(1)object 以 key,value 的形式表示将 this.data 中的 value赋值给key(也即key=value)。

说明: key 可以以数据路径的形式给出,如 array[2].message,a.b.c.d,并且不需要在 this.data 中预先定义。

(2)callback 是一个回调函数(非必须有),在这次setData对界面渲染完毕后调用。

实例代码:

<!--index.wxml-->
<view>{{text}}</view>        //1
<button bindtap="changeText"> Change normal data </button>
<view>{{num}}</view>            //2
<button bindtap="changeNum"> Change normal num </button>
<view>{{array[0].text}}</view>        //3
<button bindtap="changeItemInArray"> Change Array data </button>
<view>{{object.text}}</view>                //4
<button bindtap="changeItemInObject"> Change Object data </button>
<view>{{newField.text}}</view>                //5
<button bindtap="addNewField"> Add new data </button>
//index.js
Page({data: {text: 'init data',        //1num: 0,                        //2array: [{text: 'init data'}],        //3object: {text: 'init data'                        //4}},changeText: function() {// this.data.text = 'changed data'  // bad, it can not workthis.setData({ text: 'changed data'})},changeNum: function() {this.data.num = 1this.setData({num: this.data.num})},changeItemInArray: function() {// you can use this way to modify a danamic data paththis.setData({'array[0].text':'changed data'})},changeItemInObject: function(){this.setData({'object.text': 'changed data'});},addNewField: function() {this.setData({'newField.text': 'new data'                //5})}
})

注意:
(1) 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。(最好调用setData)
(2) 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。 (数据不要太大了)
(3) 请不要把 data 中任何一项的 value 设为 undefined ,否则这一项将不被设置并可能遗留一些潜在问题。(不要undefined)

微信小程序中的Page相关推荐

  1. 《八》微信小程序中的 Page

    注册页面: Page(): 用来创建小程序中的一个页面.接受一个 Object 类型参数,其指定页面的初始数据.生命周期函数.事件处理函数等. Object 参数: data:页面第一次渲染使用的初始 ...

  2. 微信小程序setinterval_微信小程序中setInterval的使用方法

    微信小程序中setinterval的使用方法 看了下小程序的画布功能,简单的使用了一下,用蹩脚的逻辑做了个 "弹啊弹,弹走鱼尾纹的小球",一起来看下吧.过程不重要主要是画布的使用哦 ...

  3. 微信小程序中带参数返回上一页的方法总结(三种)

    本篇文章给大家带来的内容是关于微信小程序中带参数返回上一页的方法总结(三种),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 方法一 把当前页面数据放入本地缓存( wx.setStor ...

  4. 微信小程序中实现瀑布流布局和无限加载

    瀑布流布局是一种比较流行的页面布局方式,最典型的就是Pinterest.com,每个卡片的高度不都一样,形成一种参差不齐的美感. 在HTML5中,我们可以找到很多基于jQuery之类实现的瀑布流布局插 ...

  5. 关于微信小程序中时间预约的简单实现

    关于微信小程序中时间预约的简单实现 1. js中定义获取日期函数.日期点击事件 2. 在data中定义数组等变量 3. onLoad调用函数并保存回data 4. wxml展示 5. 页面监控函数on ...

  6. 微信小程序中通过Basic Auth传递token

    npm导入用于Base64加密的工具包js-base64 // package.js "dependencies": {"js-base64": "^ ...

  7. 室内定位——如何在微信小程序中获取Beacon的RSSI值

      前言:本文使用的Beacon是智石科技的Smart Beacon,手机的操作系统是Android,其中实现室内定位最重要的参数是Beacon发射的蓝牙信号中的RSSI值.废话不多说,请看下面分解. ...

  8. 微信小程序中的onLoad

    微信小程序中的onLoad onLoad是一个生命周期函数,表示页面加载 onLoad默认有一个Object类型的参数,是指 其他页面打开当前页面所调用的 query 参数 举个栗子~ 当我们在页面f ...

  9. 微信小程序中绘制图表 (AntV F2 的使用)

    1.安装小程序F2组件 npm i @antv/f2-canvas 2.安装好相关依赖包之后,使用微信开发者工具运行项目,点击开发者工具顶部详情,勾选 使用npm模块,再点击菜单栏中工具下的构建npm ...

最新文章

  1. json的简单的数据格式
  2. AutoML自定义搜索网络类(如何在一个大的网络中搜索一个网络)
  3. 如何实现Conditional Include
  4. 模态框在IE下的问题,即position:fixed在IE下不兼容的处理方式
  5. TCL withSNPS info existscreate_cellcreate_netconnect_net
  6. python的argsort函数_python——argsort函数
  7. 【SQL Server 学习系列】-- sql 随机生成中文名字
  8. Linux删除特殊字符文件
  9. android 自定义推流器,Android直播实现 Android端推流、播放
  10. 实体零售全渠道及数字化发展报告(2020)
  11. python中的and_我想问下python中 逻辑与:“”和“and”的区别
  12. html排版跟代码不一致_用壹伴助手,几分钟搞定公众号排版
  13. 机器学习之信用卡诈骗案例总结
  14. 计算机不断自动重启,电脑不断自动重启怎么办?
  15. linux 日志报警,linux日志报警怎么解决
  16. Google Earth Engine学习笔记(一)
  17. GPS北斗卫星授时服务器(NTP时钟)设计及方案应用
  18. 外贸通:1.5亿用户信息遭泄露,又一大公司泄露用户数据!健身App被黑客攻破
  19. 使用meb工具在线热备,将单实例切换为主从
  20. 线程与进程、Android多线程编程

热门文章

  1. 给大家推荐一款由PHP+MYSQL搭建的货运租车出行源码
  2. 有什么软件可以搜JAVA题答案_Java Web应用基础(软件)-中国大学mooc-试题题目及答案...
  3. 【技术实战】华为手机学生模式下的微信数据提取
  4. android音频驱动目录,手机录音在哪个文件夹_安卓手机录音保存路径 - 驱动管家...
  5. “易信”亮点功能的测试报告
  6. 突破生产力结界,华为平板M5的因与革
  7. 【项目管理】如何进行项目变更管理?
  8. Spring - 手把手分析 IoC 容器创建过程
  9. 苹果电脑的系统安装的几种方式
  10. 大数据基础课03 阿里美团这些大厂都在用什么大数据架构?