我们先来看看小官是怎么说明这个setData的用法的,直接截图:
上面说得很清楚了,视图层的数据异步更新,逻辑层的this.data同步更新,这么说就是不需要赋值语句了对吧,但是实际上并非如此,比如下面的语句:
this.a = "a";
this.setData({
a: "a"
})
如果没有第一个语句的话,就只能更新视图层,this.a却不发生变化,这样一来不就跟官方的说法相违背了吗?你们怎么看?小程序是基于MVVM模式的吗?有没有大佬解释一下,我入坑没多久,不喜勿喷,因为我喷不过你
/个性签名,不服不行;突破1万小时,你就是高手!😄
是this.data.a 不是this.a 注意区分和vue的区别
难怪,我以前一直写的this.data.a,后来发现用this.a好像也行,然后就简写了,现在发现并不一样
首先
this.a = "a";
this.setData({
a: "a"
})
没什么联系的。
这两句才有联系
this.data.a = "a";
this.setData({
a: "a"
})
this.data.a = "a"; 是 this.data.a更新了 。但是wxml的显示没有更新。
this.setData({
a: "a"
})
是 this.data.a更新了 和wxml的显示也更新。
官方的说法哪里违背了? 看不出来
直接修改 this.data是无法改变页面状态的。
setData相当于page.update的局部刷新