这里封装一种方法,在Page构造函数上将扫码参数合并到options上,这样就不需要每个页面都去处理一下参数,减少冗余代码增加代码可读性和扩展性。
// 写在 app.js App构造函数之前
// 微信小程序
const originalPage = Page
Page = function (app) {
let onload = app.onLoad
app.onLoad = function(options) {
if (options.q) {
let query = initParm(decodeURIComponent(options.q))
for(let item in query) {
options[item] = query[item]
}
}
onload.call(this, options)
}
return originalPage(app)
}
// 支付宝小程序
const originalPage = Page
Page = function (app) {
let onload = app.onLoad
app.onLoad = function(options) {
const qrCode = getApp().globalData.query ? getApp().globalData.query.qrCode : undefined
if (qrCode) {
let query = initParm(qrCode)
for(let item in query) {
options[item] = query[item]
}
}
onload.call(this, options)
}
return originalPage(app)
}
// 工具函数
function initParm(parm) {
let queryStr = parm.split("?")[1]
let queryObj = {}
let result = ''
if(queryStr) {
if(queryStr.indexOf('&') >= 0) {
let query = queryStr.split('&')
for(let i = 0; i < query.length; i++) {
result = query[i].split('=')
queryObj[result[0]] = result[1]
}
} else {
result = queryStr.split('=')
queryObj[result[0]] = result[1]
}
}
return queryObj
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。