这篇文章主要介绍“微信小程序开发中全局变量缓存的问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序开发中全局变量缓存的问题怎么解决”文章能帮助大家解决问题。
这个问题的出现是因为,在input的事件,我没有找到更好的能监听键盘收回的方法,也是为了更好的用户体验吧,所以随之而来的问题就是全局变量,在赋值之后用户退出这个页面,全局变量被微信缓存了,然后造成,用户输入过一次之后,修改手机号失败的bug。
let Btel = '',//防止用户恶意修改手机号
Byzm = '';
handleTel(e) {// 这里修改用户输入的手机号
this.setData({
tel:e.detail.value
})
},
handleYzm(e) {
this.setData({
Yzm:e.detail.value
})
Byzm = e.detail.value; let psd = this.data.psd,
yzm = this.data.Yzm;
yzm == psd ? this.setData({isYzm:0}):'';
}, handleGetYzm() { let reg = common.telReg,
val = this.data.tel;
if (!reg.test(val)) {
wx.showModal({
content:'请输入正确的手机号',
showCancel:false,
confirmColor:'#3cc51f',//默认值为#3cc51f
success:res =>{ if(res.confirm){
this.setData({
tel:''
})
}
}
})
}else {//发送验证码的时候用全局变量的手机号
Btel = val;// 这里是全局的手机号
this.setData({
isReset : true,
isNoClick: true
})
const data ={
tel:val//传的是全局变量
};
utils.sendRequest(api.YanZhengMa, data, this.handleGetYzmSucc.bind(this));
//button 定时器 let time = setInterval(()=>{ let phoneCode = this.data.time;
phoneCode --
this.setData({
time : phoneCode
}) if(phoneCode == 0){
clearInterval(time)
this.setData({
isReset : false,
isNoClick: false,
time:60
})
}
},1000)
}
},
//然后这一步是校验了用户在请求完验证码接口后 有没有修改手机好 然后保存handleSave() { let name = this.data.name,
telNum = this.data.tel,
yzm = Byzm,
status = this.data.isYzm,
card = wx.getStorageSync('UserCard'); let timestamp= new Date().getTime(); if (yzm == '') {
wx.showModal({
content:'请输入验证码.',
showCancel:false,
confirmColor:'#3cc51f'
}) return false;
} if (name!=''&&telNum!='') { if(Btel != telNum) {
utils.showModal('手机号发生变化,请重新获取验证码。');
}else {
const data ={
distribution_id:card.distribution_id,
post:{
user_name:name,
user_tel:Btel,
user_code:yzm
},
user_id:card.user_id,
password:yzm+timestamp
};
utils.sendRequest(api.BindTel, data, this.handleSaveTel.bind(this));
}
}else {
utils.showModal('请填写完整信息哟');
}
},
// 然后在 保存成功之后 用户点击确定 清空 全局变量 也可以在隐藏和卸载的生命周期里面清空全局变量。
handleSaveTel(res) { if (res.data.error == 0) { let go = this.data.go,
id = res.data.data.id,
lv = res.data.data.level;
wx.showModal({
content:'绑定成功~',
showCancel:false,
confirmColor:'#3cc51f',//默认值为#3cc51f
success:res =>{ if(res.confirm){
Byzm = '';//对小程序全局变量缓存进行清除 if (go) {
wx.redirectTo({
url: '/pages/user/cash/cash'
})
}else { if (id != 0) { let card = wx.getStorageSync('UserCard');
card.distribution_id = id;
card.distribution_level = lv;
wx.setStorageSync('UserCard',card);
wx.setStorageSync('seller', true)
}
wx.switchTab({
url: '/pages/user/index'
})
}
}
}
})
return false
}else {
utils.showModal(res.data.err_msg);
}
}
关于“微信小程序开发中全局变量缓存的问题怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/4579615/blog/4353053