收藏
回答

一样的代码,输出不同的结果,到底是哪里有问题?

// 弹出登录窗口

openLoginCard() {

var that = this;

var userInfo = app.globalData.userInfo;

console.log(userInfo)

if (userInfo == null) {

that.setData({

loginshowModalStatus: true,

})

}

},

// 添加到购物车的请求

cartrequest: function(data) {

var that = this;

var userInfo = app.globalData.userInfo;

console.log(userInfo)

if (userInfo == null) {

that.setData({

loginshowModalStatus: true,

})

return;

}



代码在最上面,都是英文标点.我是想做个判断,让未登录的用户打开小程序的时候,打开一个提醒登录的弹窗.已经登录的就不弹了.购物车也是的,未登录的用户点击购物车也会弹窗,已经登录的就直接添加成功.可是一样的代码,为什么会有不同的结果,非登录的状态下是一致的,登录了不行.最可气的,登录状态下直接读app,然后app下的globalData下的userInfo是有值的,直接读,不到,读他爷爷能读到,这也太护犊子了吧?

回答关注问题邀请回答
收藏

2 个回答

  • chen
    chen
    2018-09-07

    你获取用户信息时,是异步的,最好是先做个回调把

    2018-09-07
    有用
    回复 1
    • 小喬
      小喬
      2018-09-07

      是的,一开始我没注意,确实是这样的,谢谢~

      2018-09-07
      回复
  • 哄哄
    哄哄
    2018-09-07

    能从你提供的代码里看出问题的 应该是超级大神。(代码不够完整,但是你提供完整的 太多了 我也不想看)


    可能以下几种情况;

    1、登录 或者 获取用户信息 是异步操作;

    2、不知道你的app.globalData.userInfo 是否有初始值  如 globalData:{userInfo:{}} 还是 globalData:{userInfo:null}

    前者应该用JSON.stringify(app.globalData.userInfo)=='{}'判断。

    3、...


    2018-09-07
    有用
    回复 1
    • 小喬
      小喬
      2018-09-07
      1. 对对对,是异步操作

      2. .我一开始同步的,后来我改了.可以了,

      3. ........

      4. 谢谢




      2018-09-07
      回复
登录 后发表内容