版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34672907/article/details/90636954
昨天在做需求的时候发现了微信小程序点击获取电话号码时也会将小程序onshow里面赋值的变量清空。
自己查看了一下是弹出获取电话号码的时候微信小程序也调用了onhide和onshow,也就是说默认相当于跳出了当前页,跳出了当前页那肯定再次返回就调用了onshow啦。搞清楚原因肯定就是干啦。
1.在onhide的时候设置一个变量,这个变量的用来判断是不是要把onshow里面的某个变量在onhide时不清空。
2.onhide时不清空,但还有一点就是,如果我在bindgetphonenumber函数里面设置变量改变,onhide的时候还是把变量清空了,说明onhide执行早于bindgetphonenumber,所以只能自己写一个catchtap函数监听是否需要把onhide里面的值清空。
下面上代码:
html的设置:
<button class='get_phone_number ' catchtap='getTip' open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button>
js的实现,我这里的变量是cabinet_id,如下:
Page({
data: {
cabinet_id:null,//柜子的id
},
/**
* 生命周期函数--监听页面显示
*/
onShow:function(){
console.log("我是onshow")
this.setData({cabinet_id:123435})
},
getTip(){
console.log("点击获取电话的时候的id"+this.data.cabinet_id)
wx.setStorageSync("popToAllow", true);
},
//得到手机号
getPhoneNumber(e) {
// 得到手机号给后台
wx.removeStorageSync("popToAllow");//获取了手机号之后记得把popToAllow清空防止值存在影响之后逻辑
},
onHide:function(){
console.log("我是隐藏的页面")
if (wx.getStorageSync("popToAllow")){//popToAllow为true需要保留cabinet_id
console.log("我是本应该保留id" + this.data.cabinet_id)
}else{
this.setData({ cabinet_id: null }); //将柜子id清空掉
}
},
})
我是用存在缓存的办法,你们可以用其他方法,比如直接变量popToAllow也行,因为在onhide的时候变量还是存在的,onhide完了之后popToAllow才会被去掉,这样的话也一样达到效果。
笔记做到这里。