近期在制作小程序的时候在onlond里进行数据渲染的时候出现了,value below was evaluated just now的提示,然后就发现数据没有赋值的问题,但是在回调的success里的数据是可以打印的,网上也没有发现合适的解决方法,最后,经过打印,发现,在onload里的代码执行种由于小程序的request返回的值还没有返回所有,造成了还没有值,就已经渲染的问题,尝试了多种方式,最后用setTimeout
暂时解决了这个问题,我给代码端的赋值渲染添加了延时函数,晚了500秒,让后台先执行了数据的查询,然后再进行数据赋值渲染,避免了控制的产生,下面是我的代码,希望有大佬如果有根治的方法的话,可以共同参考学习
/*调用数据及渲染值的小程序函数*/
getUserData:function(userOa) {
let that=this;
wx.showLoading({
title: '用户数据渲染中...',
})
wx.request({
url: app.globalData.requesturl + "workflow/getUserData_zxf.php",//暂定
data: {
action:'getUserData',
LoginUserOa: userOa,
},
success: function (res) {
/**on */
if(res.data.code==0){
that.setData({
allstar:res.data.data.allstar,
})
that.setData({
allstar:res.data.data.allstar,
allzx:res.data.data.allzx,
powerAll:res.data.data.powerAll,
userdata:res.data.data.userData
})
}else{
console.log(res);
wx.showToast({
title: res.data.msg,
icon: 'loading',
duration: 3000
})
that.setData({
isError:true,
msg:res.data.msg
})
}
},
})
wx.hideLoading()
},
/*onload里的调用*/
onLoad: function (options) {
let that=this;
/**db.data->this.data */
that.getUserData(wx.getStorageSync('user_id'));
/**防止value below was evaluated just now文件执行顺序的原因 */
wx.showLoading({
title: '加载中...',
})
setTimeout(function (){
wx.hideLoading()
/**set page */
that.setPageShow();
/**测试打开 */
that.setData({
qjlpost:true,
xzpost:true,
cwpost:true,
zxposts:true
})
console.log(that.data)
},1000)
},