请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

setData赋值




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 23:36:06

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 回复 有任何疑惑可以回复我~
  • 提问者 苝冰洋 #1
    setData的原理我理解了,非常感谢。
    回复 有任何疑惑可以回复我~ 2016-12-30 00:13:08
  • 提问者 苝冰洋 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2016-12-30 00:13:14
  • 是不是这个意思,obj参数上的属性浅拷贝到data对象说之后,脏数据监测,然后就可以把obj属性对应的值赋值到data对象里面了。
    回复 有任何疑惑可以回复我~ 2019-07-02 21:56:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信