微信小程序新手入门不得不踩的坑之为数据绑定使页面刷新

首先我的页面是:


  
    
      
    
  



  
    
    后勤服务中心
  
  
    授权微信登录后我们将获取您的头像等公开(不包括手机号码等)信息
  
  
  
bindgetuserinfo
'>确认登录

先判断再渲染,我首先是出现下面else的页面,然后页面授权之后重新渲染if中的页面

在JS文件中我的数据改变的改吗

getUserInfo: function (e) {
    console.log(e)
    app.globalData.userInfo = e.detail.userInfo
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true,
      isAuthorized: true,
    })
  },
bindGetUserInfo: function(e){
    
    var _this = this;
    
    if (app.globalData.userInfo) {
      _this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true,
        isAuthorized: true,
      })
      console.log('我进来了if');
    } else if (_this.data.canIUse) {
      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {
        _this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true,
          isAuthorized: true,
        })
        console.log('我进来了else');
      }
    };
    console.log(this.data.hasUserInfo);
    _this.onPullDownRefresh();
    _this.onLoad();
    console.log('888888');
    console.log(this.data.isAuthorized);
  },

我以为他在canIUse中会调用getUserInfo(),而且我一开始这样写是好用的。 嗯....不知道为什么,出去跑完步回来就不好使了。

后来我把bindGetUserInfo方法给删掉了,只留下getUserInfo,并且在wxml页面中做了改动:

然后就好使了。

而且最为重要的是,我记住了只要绑定的数据发生了改变而代码是正确的情况下,页面就会自动刷新了!!!



你可能感兴趣的:(微信小程序)