扩展微信小程序 Page 构造函数,修改生命周期函数
不BB,直接正题
一. 将公共方法绑定到Page上
单个绑定
const oldPage = Page
Page = function(app) {
// 注意公共函数的名字不要重复,否则覆盖
app.util = function() {} return oldPage(app)
}多个绑定,文件绑定
const util = require('./util.js'); // 需要绑定的函数由util文件exports出来
const oldPage = Page
Page = function(app) {
let newPage = Object.assign({}, util, app) return oldPage(newPage)
}
二. 扩展,修改生命周期函数
const oldPage = Page
Page = function(app) {
app.onLoad = function(options) { // 这里必须使用function, 不可以使用箭头函数, 否则this指向错误
console.log("扩展onLoad");
// onLoad函数在是当前page实例上下文中执行,所以当前的this为当前page实例
// 如果不使用call来硬绑定,而是直接app.onLoad(),那么onLoad里的this将为app这个对象
// 即我们正常在page.js里Page(app) 括号里面我们自己写的page对象
if(typeof app.onLoad === 'function') {
app.onLoad.call(this, options);
}
}
return oldPage(app)
}
ps.想更系统的了解js关于this的知识可以戳这里
三. 使用
我自己写的时候,将自定义的内容单独封装到一个js文件中,然后在app.js中引用这个文件即可
require('./init.js'); //引用即可
App({
onLaunch: function (options) {
}
})
扩展微信小程序 Page 构造函数,修改生命周期函数的更多相关文章
- 微信小程序 Page构造函数重写
//utils/utils.js const oldPage = Page; console.log(oldPage) Page = function (app) { //定义新函数 app.newS ...
- [转] 扩展微信小程序框架功能
通过第三方 JavaScript 库,扩展微信小程序框架功能. 扩展微信小程序框架功能(1)——Promise ES6 对 Promise 有了原生的支持,但微信开发者工具更新版本(0.11.1122 ...
- 微信小程序-Page生命周期
QQ讨论群:785071190 微信小程序开发之前我们还需认识一下小程序页面的生命周期,丛"微信小程序-代码构成"一文中我们可以了解到小程序页面中有一个.js的文件,这篇博文我们来 ...
- 微信小程序 JS动态修改样式
微信小程序这个坑啊,js动态修改样式,我们并不能用js或者jq 轻轻松松一行代码搞定.或者用removeClass addClass 来修改样式. 以下是一种动态修改样式的方法,原理是绑定数据,然后动 ...
- 关于微信小程序getUserInfo最新修改后,如何在原有项目的授权逻辑的调整
今天一大早调试小程序,结果出现这个...微信小程序也是醉了,这么大的改动,也没有通过开发者服务号通知一声 人在屋檐下不得不低头(改呗,那么如何以最小的代价更新呢,下面给我的解决方案) 原来我们在首次进 ...
- 微信小程序 setData 如何修改动态数据?
最近这段时间在写微信小程序,有一个页面需要动态修改 data 中的数据,而这里似乎是个坑. 1.正常修改 正常修改很简单,当触发 change 事件时,数据和页面都会同时发生改变.这个也不用多说,很简 ...
- 微信小程序-page
一 什么是page() page(),是一个函数,用来注册一个页面, 接受一个object参数, 指定页面的初始数据,生命周期函数,事件处理函数 等等 object参数说明: (1)data (obj ...
- 【微信小程序】App.js生命周期
1.小程序的生命周期-App.js App() 必须在 app.js 中注册,且不能注册多个.所以App()方法在一个小程序中有且仅有一个. App({ onLaunch: function () { ...
- 微信小程序开发之修改和获取变量的值
在小程序开发过程中有两种变量,一种是定义在app,js里面的globalData定义的全局变量,另一种是在各个页面app,data里面的定义的变量. 一:全局变量的定义,获取值,赋值,修改 app.j ...
随机推荐
- rosbag 那些事
..bag文件转.txt 将file_name.bag文件中topic_name话题的消息转换到Txt_name.txt文件中: rostopic echo -b file_name.bag -p / ...
- 使用resultMap定义查询结果集,实现关联查询
接下来介绍resultMap定义查询结果集,实现关联查询 1 首先在接口中定义操作的方法 public interface EmployeeMapperPlus { public Employee g ...
- hibernate中get和load区别
在日常开发中,获取数据时必不可少的,这样就要用到get和load方法来实现了.下面简单说一下get和load的区别. 1.返回值不同 使用get方法检索数据时,没有该数据返回值为null. 而使用lo ...
- 非GUI模式运行Jmeter脚本
一.应用场景 日常测试过程中发现,在大数量并发时,jmeterGUI界面经常宕机.卡死,在这种情况下我们就需要使用命令行来执行脚本了(非GUI模式). 二.命令行模式优点 1.节约系统资源,无需启动界 ...
- REST API (四)之Generic views
通用的视图 Django’s generic views... were developed as a shortcut for common usage patterns... 它们采取一些常见的习 ...
- Excel表格数据导入MySQL数据库
有时候项目需要将存在表格中的批量数据导入数据库,最近自己正好碰到了,总结一下: 1.将excel表格另存为.csv格式文件,excel本身的.xlsx格式导入时可能会报错,为了避免不必要的格式错误,直 ...
- JavaScript中JSON的序列化和解析
1.序列化:JSON对象----->JSON格式字符串 ①方法: JSON.stringify() ②示例程序: var jsonString = JSON.stringify(obj); al ...
- Java ——运算符
本节重点思维导图 递增递减 前缀自增自减法(++a,--a): 先进行自增.减运算,再进行表达式运算 后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增.减运算 例[1]: int a ...
- 【MM系列】SAP MM模块-查看移动平均价的历史记录
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-查看移动平均价的历 ...
- Scratch少儿编程系列:(四)脚本选项卡说明
脚本选项卡下面主要包括:运动.事件.外观.控制.声音.侦测.画笔.运算.数据.更多积木. 一.运动:所谓运动,指的是角色的“运动”.如移动10步,右转15度,左转15度等. [注] 将“脚本”从选项卡 ...