微信小程序succsee后居然不能读取this.data?也没办法this.xxx()调用其它方法!?

微信小程序在经过success后不知为何无法调用其它方法;

  toregister(rex){          
    db.collection("s").where({
        xx:rex
    }).get({
        success: function(res) {
            this.test();
            if (Object.keys(res).length > 1) {
                console.log(this.data)
            }
        }
    })
  },
test(){
    console.log("qwq")
},

发现无法调用 test() 方法了;也读取不到 data 数据了;还以为废了了都。

但其实还真是废了......

在 JavaScript 中,函数的 this 关键字指向调用该函数的对象。在你的代码中,success 回调函数是由微信小程序的 wx.cloud.database().collection().get() 方法调用的,因此 success 函数中的 this 关键字不再指向当前的 toregister 函数,而是指向 success 函数所属的对象。

为了解决这个问题,你可以使用箭头函数来定义 success 函数,因为箭头函数的 this 关键字会被继承自上层作用域。例如(仅显示重点):

success:res=>{
            if (Object.keys(res).length > 1) {
                this.test()
            }
        }

这样,当 success 回调函数被执行时,它内部的 this 关键字就会指向当前的 toregister 函数,从而正确地调用 test 方法。

将前者改成后者的模式就可以调用啦;(两段代码是存在不一样的【后者修改过的】)自己去找不同。如果有什么其它问题私信我帮你解决

制作实在不易,还望各位点赞👍打赏🧧收藏⭐️支持支持,谢谢大家!~~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值