感谢大家的回复,已经找到问题并解决,不是程序分支没有执行到,也不是this丢失,这个可能是小程序自身的一个问题,异步回调层级太深,以及上下文不一致就会导致setData无法成功执行,解决办法就是把当前更新ui的逻辑独立出来不要放到回调方法里面然后把page对象当作参数传递进去然后执行更新ui的方法
this.setData 设置后页面无法刷新?getNextSubject:function(){ var that = this; checkNextSubject(data =>{ if(data.code == 107){ wx.showModal({ title:"提示", content: '用户正在参与其他答题请稍后再来', showCancel:false }) }else if(data.code == 109 || data.code == 110){ //结束 if (timer) { clearInterval(timer); that.setData({ right: true }) } wx.showModal({ title:"提示", content: '本轮答题已经结束,你答对了'+this.data.qaYes+'分', showCancel:false, success:function(){ wx.navigateBack({ delta: 0, }) }, }) }else{ if(data.data){ var numid = data.data.number var question = data.data.subject var answer = data.data.optionsList var tips = data.data.tips that.setData({ numid:numid, question:question, answer:answer, tips:tips },cb =>{ console.log("-------------------",cb); }) } } }) }, 上面是我的代码,遇到一个很奇葩的问题,第一次进页面这个方法可以正常执行并且可以渲染页面,等我把页面redirect出去后再次进页面这个方法中的setData就不起作用了,添加了回调也不执行,可以确定的是要设置的值都是存在的,
2020-11-07