setData赋值

来源:20-14 电影页面数据绑定(下)

苝冰洋

2016-12-29




58652232000114ce03350113.jpg

58652232000198ad04340106.jpg

老师,这块我有点看不懂,通过这种方式就能给data域的三个对象赋值了么?

this.setData(readyData) 是给data域设置一个readyData对象,为什么设置了 readyData[inTheaters] = movies,data域中的inTheaters的value值即为movies?


我的理解是:inTheaters是readyData的属性,readyData[inTheaters] = movies这句话相当于把movies值赋值给inTheaters这个属性,但是readyData和data域是什么关系呢?为什么readyData[inTheaters] = movies, data域中的inTheaters的value值即为movies呢?


写回答

1回答

喝杯冰咖啡

2016-12-29

1.页面最终绑定的是data对象上的属性(键)
2.setData(obj)方法中要求对象作为参数,他做了两件事
    1)他会将obj参数上的属性浅拷贝到data对象上,该功能建议你参考Object.assign()方法的功效
    2)obj参数上的属性浅拷贝到data对象的同时,会对页面绑定该属性的地方重新渲染,起到了脏值检查的作用
3.你最后提到data是初始化三个属性为对象。为什么要这样做,举个例子,var a={};a.b=3;意思是给对象a新增个属性b,赋值3这样做没问题,那么var obj;obj.b=3;就会报错了,因为obj为undefined.undefined是不能新增属性b的。我用手机回复的,好累,希望你能明白。

5
3
朱青1900
是不是这个意思,obj参数上的属性浅拷贝到data对象说之后,脏数据监测,然后就可以把obj属性对应的值赋值到data对象里面了。
2019-07-02
共3条回复

微信小程序入门与实战(全新版) 超20000人学习的好课

4年同步微信官方迭代,累计20000+人学习, 比微信官方更火爆!

23965 学习 · 6931 问题

查看课程