为什么wepy的数据无法渲染到实例里面去
为啥明明WEPY是将数据渲染到视图还会出这个问题呢?
因为只是类似于 Vue 框架,所以不能完全实现数据渲染,尤其当异步操作的时候。
(1)WePy 普通数据绑定。
WePY使用脏数据检查对setData进行封装,在函数运行周期结束时执行脏数据检查,一来可以不用关心页面多次setData是否会有性能上的问题,二来可以更加简洁去修改数据实现绑定,不用重复去写setData方法。代码如下:
this.title = 'this is title';
(2)异步操作里面
需注意的是,在异步函数中更新数据的时候,必须手动调用$apply
方法,才会触发脏数据检查流程的运行。如:
setTimeout(() => {
this.title = 'this is title';
this.$apply();
}, 3000);
在函数运行周期之外的函数里去修改数据需要手动调用$apply方法。
所有的Promise的then,catch等方法,已经是在Wepy的函数周期之外了,
如果是在这些方法里面设置属性值,就必须调用$apply方法,如果是在子Component里面就调用this.$parent.$apply()就行了