引用自定义组件方法线上报错
发布于 5 年前 作者 hqian 334 次浏览 来自 问答

自定义了一个授权弹窗组件,里面有个显示或者关闭弹窗的方法openFn,在进入小程序首页的时候会判断用户是否授权获取用户信息,如果没有,会调用组件的openFn方法弹窗提示用户授权。

首页在onready里面获取组件实例,代码如下:

onReady() {
    this.authorize = this.selectComponent('#authorize')
    console.log(this.authorize,'onready+++打印组件实例')
  },

然后在onload里面调用一个方法判断用户是否授权,代码如下:

isAuthorize: function () {//判断用户是否授权
    let that = this;
    wx.getSetting({
      success(res) {
        if (res.authSetting && res.authSetting['scope.userInfo']) {  //用户有授权,直接调用函数进行登录  
          that.authorizeSuccFn()
        } else //用户未授权,弹窗引导用户授权
          that.setData({
            isOpensetting: false,
            authorizeMsg: '亲,该小程序需要授权用户信息才能使用'
          })
          that.authorize.openFn()
        }
      }
    })
  },

自己在本地调试工具和手机上测试都是没有问题,但是线上却一直报错,求大神指导下是怎么回事。报错信息:

1 回复

感觉可能是个时序问题。#authorize 是一开始就存在于页面中的吗?还是某次 setData 引入的?

回到顶部