首先我的页面是:
<block wx:if='{{isAuthorized}}'>
<view class='border'>
<view class="fellterinfo">
<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
</view>
</view>
</block>
<block wx:else>
<view class='upper'>
<icon type='info' size='100'/>
<text>后勤服务中心</text>
</view>
<view class='state'>
<text>授权微信登录后我们将获取您的头像等公开(不包括手机号码等)信息</text>
</view>
<button class='btnAuthorize' open-type='getUserInfo' bindgetuserinfo='bindGetuserinfo'>确认登录</button>
bindgetuserinfo
'>确认登录</button></block>先判断再渲染,我首先是出现下面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页面中做了改动:
<button class='btnAuthorize' open-type='getUserInfo' bindgetuserinfo='getuserinfo'>确认登录</button>
然后就好使了。
而且最为重要的是,我记住了只要绑定的数据发生了改变而代码是正确的情况下,页面就会自动刷新了!!!