原文首发于http://blog.yumengtao.top
首先简单说一下普通二维码绑定功能作用:
- 兼容线下已有的二维码
- 能同时支持微信、支付宝小程序
- 小程序启动传参
我的项目原始需求是扫描二维码调起小程序并获取当前被扫描设备ID。 背景介绍完毕回到Megalo,由于Megalo对原生生命周期进行了封装,这里碰到得问题是二维码值从何处获取? 直接上解决代码:
function onLoad(){
if(this.$mp.query.q){//判断是否获取到二维码值,用户可能通过扫二维码进来,或者是微笑下拉小程序直接进入。
let deviceId = getURLParameters(decodeURIComponent(this.$mp.query.q)).d //我的二维码值是https://xxxx/xxxx?d=ABCD123,使用正则获取url参数
if(deviceId){
appInstance.globalData.devID = deviceId; //保存至全局变量
}
}
}
//url解析代码
function getURLParameters(url) {
return url
.match(/([^?=&]+)(=([^&]*))/g)
.reduce(
(a, v) => (
(a[v.slice(0, v.indexOf("="))] = v.slice(v.indexOf("=") + 1)), a
),
{}
)
}
复制代码
答案就是$mp,页面初始化时保存小程序的相关信息都绑定在this.$mp。 具体$mp内容很多,下面一个截图大家可以简单看一下,实际根据项目任君取用。