解决微信小程序Wepy框架,在异步Promise回调后不触发界面更新问题

今天在有个界面是要求在调用接口请求成功后,要刷新界面,但是我在请求在回调后,设置this.xxx=xxx,并没有触发页面的render,为什么呢???

回去详细的查看了Wepy的API,发现一个东西:

WePY数据绑定方式

WePY使用脏数据检查对setData进行封装,在函数运行周期结束时执行脏数据检查,一来可以不用关心页面多次setData是否会有性能上的问题,二来可以更加简洁去修改数据实现绑定,不用重复去写setData方法。代码如下:

this.title='this is title';

但需注意,在函数运行周期之外的函数里去修改数据需要手动调用$apply方法。如:

setTimeout(()=>{

    this.title='this is title';this.$apply();

},3000);

也就是说,所有的Promise的then,catch等方法,已经是在Wepy的函数周期之外了,如果是在这些方法里面设置属性值,就必须调用$apply方法,如果是在子Component里面就调用this.$parent.$apply()就行了

你可能感兴趣的:(解决微信小程序Wepy框架,在异步Promise回调后不触发界面更新问题)