小程序的每个页面都是独立的,每个页面都必须有 page.js 和 page.wxhl 文件,page.json 和 page.wxss 文件非必要文件,注意如果创建 page.json 则至少保证有一个对大括号,否则IED报错。

page.js 管理该页面的逻辑事件。每个页面必须声明 Page() 方法。

Page() 用来注册页面,其包含一下属性:

data 用于初始化数据;data 将会以 JSON 的形式由逻辑层传至渲染层,所以其数据必须是可以转成 JSON 的格式:字符串,数字,布尔值,对象,数组;这里的 data 充当model的角色。

注:Page() 中 若不声明 onShareAppMessage() 该页面则不可分享,只有声明 onShareAppMessage() 该页面才有 分享/转发 功能(就算onShareAppMessage()中什么都不写都可以

Page() 未声明 onShareAppMessage() 案例

Page() 声明 onShareAppMessage() 案例

// index/index.js
Page({
data: {
"user_name":"mirage",
"user_skill":["javascript","jquery","angularjs","nodejs"]
},
onLoad: function (options) {},
onReady: function () {},
onShow: function () {},
onHide: function () {},
onUnload: function () {},
onPullDownRefresh: function () {},
onReachBottom: function () {},
onShareAppMessage: function () {}
}) // ----------------------------------- <!-- index/index.wxml -->
<view class="box">
<text class="title">Hello World!</text>
</view>
<view class="userName">
user name : <text>{{user_name}}</text>
</view>
<view>
user skill :
<text class="item">{{user_skill[0]}}</text> /
<text class="item">{{user_skill[1]}}</text> /
<text class="item">{{user_skill[2]}}</text> /
<text class="item">{{user_skill[3]}}</text> /
</view>

生命周期函数

  • onLoad: 页面加载

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

  • onShow: 页面显示

    每次打开页面都会调用一次。

  • onReady: 页面初次渲染完成

    一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。

    对界面的设置,如wx.setNavigationBarTitle请在onReady之后设置。

  • onHide: 页面隐藏

    当navigateTo或底部tab切换时调用。

  • onUnload: 页面卸载

    当redirectTo或navigateBack的时候调用。

onLoad() 参数

// index/index.js    ==============================
Page({
data: {
"user_name":"mirage",
"user_skill":["javascript","jquery","angularjs","nodejs"]
},
onLoad: function (req) {
console.log(req);
},
toas:function(){
wx.navigateTo({
url: "../info/info?name=" + this.data.user_name + "&skill="
+ this.data.user_skill
})
}
}) // info/info.js ==============================
Page({
data: {},
onLoad: function (req) {
this.setData({
name:req.name,
skill:req.skill.split(',')
});
}
})

onLoad 的参数作为接受传递参数的对象。

页面相关事件处理函数

  • onPullDownRefresh: 下拉刷新
  1. 监听用户下拉刷新事件。
  2. 需要在app.json的window选项中或页面配置中开启enablePullDownRefresh。
  3. 当处理完数据刷新后,wx.stopPullDownRefresh可以停止当前页面的下拉刷新。
  • onReachBottom: 上拉触底
  1. 监听用户上拉触底事件。
  2. 可以在app.json的window选项中或页面配置中设置触发距离onReachBottomDistance。
  3. 在触发距离内滑动期间,本事件只会被触发一次。
  • onPageScroll: 页面滚动
  1. 监听用户滑动页面事件。
  2. 该函数有参数获取页面在垂直方向已滚动的距离(单位px)。
  • onShareAppMessage: 用户转发
  1. 只有定义了此事件处理函数,右上角菜单才会显示“转发”按钮
  2. 用户点击转发按钮的时候会调用
  3. 此事件需要 return 一个 Object,用于自定义转发内容

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

Page.prototype.route(原型链字段)

route 字段可以获取到当前页面的路径。( 注:基础库 1.2.0 开始支持,低版本需做兼容处理 )

Page.prototype.setData()

setData 函数用于将数据从逻辑层发送到视图层(异步),同时改变对应的 this.data 的值(同步)。

Page({
data: {},
onLoad: function (req) {
// 通过 setData 获取异步加载参数
this.setData({
name:req.name,
skill:req.skill.split(',')
});
}
})

onLoad() 案例中有提到

setData() 参数格式

object 以 keyvalue 的形式表示将 this.data 中的 key 对应的值改变成 value。 callback 是一个回调函数,在这次setData对界面渲染完毕后调用。

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

注意:

  1. 直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致。
  2. 单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

  3. 请不要把 data 中任何一项的 value 设为 undefined ,否则这一项将不被设置并可能遗留一些潜在问题。

view层调用事件

view(视图) 层中使用 bindtap 属性调用 logic(逻辑) 中定义的事件。

Page({
onLoad: function () {},
onShow:function(){
console.log(this.route);
},
// 点击弹出提示卡
click_1:function(){
wx.showToast({
title: '成功',
icon:'success',
duration:3000
})
},
// 点击输出提示
click_2:function(){
console.log("你点击了 “提示消息” 按钮");
},
// 页面跳转
goto:function(){
wx.navigateTo({
url: "../info/info?name=" + this.data.user_name + "&skill="
+ this.data.user_skill
})
}
})

最后附上一张官方的page生命周期图解。

微信小程序笔记<四>page.js —— 页面注册的更多相关文章

  1. 微信小程序-06-详解介绍.js 逻辑层文件-注册页面

    上一篇介绍的是 app.js 逻辑层文件中注册程序,对应的每个分页面都会有的 js 文件中 page() 函数注册页面 微信小程序-06-详解介绍.js 逻辑层文件-注册页面 宝典官方文档: http ...

  2. 微信小程序答题,怎么设计页面渲染,答完一题,跳到下一题

    想要的效果 1.第一页只显示第一道题的内容,如图红框2.答题后,点击下一题,内容显示第二道题的内容 代码 answer.wxml <!--pages/answer/answer.wxml--&g ...

  3. 微信小程序——3、逻辑js文件

    逻辑层js文件 微信小程序前端进行了层次划分,分为逻辑层和视图层.逻辑层实现对数据的加工和处理.与HTML页面相似,逻辑层使用JavaScript编写.逻辑层将数据处理后发送至视图层,同时接受视图层的 ...

  4. 微信小程序把玩(五)页面生命周期

    原文:微信小程序把玩(五)页面生命周期 这里只要熟悉页面的基本生命周期即可,业务在指定生命周期函数内书写. 以下是官网给出的生命周期函数方法和状态图 上面的生周期函数图对于做Android 或者IOS ...

  5. 微信小程序学习一 微信小程序的四个基本文件

    微信小程序有四种类型的文件 js 类型文件 小程序的逻辑代码文件 小程序对js es6的处理比较友好,基本上我们的es6语法都需要使用babel插件去转化成es5(具体是什么原因,自己可以去了解一下) ...

  6. 微信小程序-05-详解介绍.js 逻辑层文件

    上一篇介绍了关于.json 的配置文件,本篇介绍关于.js 逻辑层文件 微信小程序-05-详解介绍.js 逻辑层文件 宝典官方文档: https://developers.weixin.qq.com/ ...

  7. 微信小程序笔记<三>入口app.js —— 注册小程序

    小程序开发框架在逻辑层使用的语言就是JavaScript,所以想玩小程序JavaScript的基本功一定要扎实.但小程序基于js做了一些修改,以方便开发者更方便的使用微信的一些功能,使得小程序更好的贴 ...

  8. 前端笔记之微信小程序(四)WebSocket&Socket.io&摇一摇案例&地图|地理位置

    一.WebSocket概述 http://www.ruanyifeng.com/blog/2017/05/websocket.html Workerman一款开源高性能异步PHP socket即时通讯 ...

  9. 微信小程序开发06-一个业务页面的完成

    前言 接上文:微信小程序开发05-日历组件的实现 github地址:https://github.com/yexiaochai/wxdemo 这里来说一说我们的理念,我们也学习小程序开发有一周多了,从 ...

随机推荐

  1. ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二) UpdatePanel

    UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加 ...

  2. JSON C# Class Generator ---由json字符串生成C#实体类的工具

    json作为互联网上轻量便捷的数据传输格式,越来越受到重视.但在服务器端编程过程中,我们常常希望能通过智能提示来提高编码效率.JSON C# Class Generator 能将json格式所表示的J ...

  3. subversion与TortoiseSVN的使用

    Subversion是一个自由开源的版本控制系统.在Subversion管理下,文件和目录可以超越时空.Subversion将文件存放在中心版本库里,这个版本库很像一个普通的文件服务器,不同的是,它可 ...

  4. 存储过程DT参数

    public static void TableValuedToDB(DataTable dt, string storedProcName, string TypeName) { using (Sq ...

  5. piwik custom variables

    piwik custom variables  是一个功能非常强大的自定义变量跟踪方案,多用于基于访客或是页面级别的变量跟踪.piwik默认最多可以添加5个自定义变量. 使用方式是在客户端脚本里添加如 ...

  6. 通过状态机来对axi_lite总线进行操作

    通过状态机来对axi_lite总线进行操作 状态跳转: 1.初始状态 将axi_lite读写两个信道分开进行控制,在初始状态,就根据读,写信号来判断应该跳转到那一个状态. 2.写状态 在写状态中不需要 ...

  7. 阅读《7 Series FPGAs GTX/GTH Transceivers User Guide》

    阅读<7 Series FPGAs GTX/GTH Transceivers User Guide> 1.GTX在XC7K325T芯片内的排列 2.参考时钟的配置 在GTXE2_COMMO ...

  8. linux 修改mac地址,干坏事必备

    首先关闭无线 wlan0 ifconfig wlan0 down 修改mac地址 macchanger -m [MAC] [INTERFACE] 例如:macchanger -m ::::: wlan ...

  9. 64位系统VBS调用32位COM组件

    64位系统VBS调用32位COM组件 标签: 32位, 64位, COM, COM组件, VB, VBS, VBScript 标题: 64位系统VBS调用32位COM组件作者: Demon链接: ht ...

  10. Ubuntu 14.10 下安装Spark

    Spark 是一种与 Hadoop 相似的开源集群计算环境,不过最近非常火.下面介绍安装步骤. 1 安装scala 1.1 我选用的是2.11.4,下载地址http://www.scala-lang. ...