Maison  >  Article  >  Applet WeChat  >  Résolution du problème de mise en cache des variables globales dans le développement d'applets WeChat

Résolution du problème de mise en cache des variables globales dans le développement d'applets WeChat

php中世界最好的语言
php中世界最好的语言original
2018-06-05 13:48:164241parcourir

Ce problème se pose parce que, dans l'événement d'entrée, je n'ai pas trouvé de meilleur moyen de surveiller la rétraction du clavier. C'est également pour une meilleure expérience utilisateur, donc le problème qui en résulte concerne les variables globales, après l'utilisateur. Quitte la page, la variable globale est mise en cache par WeChat, ce qui provoque un bug selon lequel l'utilisateur ne parvient pas à modifier le numéro de téléphone mobile après l'avoir saisi une fois.

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);
        }
    }

Je pense que vous maîtrisez la méthode après avoir lu le cas présenté dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le sujet. Site Web chinois PHP !

Lecture recommandée :

Comment utiliser les objets Map dans le développement d'un mini-programme WeChat

Comment extraire et charger Développement de mini-programmes WeChat Réaliser

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn