为什么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()就行了

posted @ 2019-07-09 17:29  爱看星星的稻草人  阅读(471)  评论(0编辑  收藏  举报