加减逻辑部分

来源:1-7 详情页-右侧数据渲染(4)

Aurora_Meteor

2020-06-26 21:53:27


http://img.mukewang.com/climg/5ef5fc910925875100000000.jpg

图中前两行代码是不是就实现了对商品选择数量的修改?后面的几行都是在修改挂载在商品item上的数据呢?

right.js和left.js中都有挂载itemData,这两个地方挂载的数据是不是不一样?left中挂载的是相应分类中的所有商品的数据(包括该分类包含哪些商品、各个商品的具体信息),而right中只包括各个商品的具体信息?

如果我上面这段话说的正确的话,那给right中的每个menu-item挂载数据的目的是什么呢?

写回答

3回答

好帮手慕久久

2020-06-27

同学你好,问题解答如下:

1.理解不全面。前两行代码是修改html结构上的商品数量(实现视觉上商品数量变化),后几行代码是修改挂载在“menu-item”上的数据,如下:

http://img.mukewang.com/climg/5ef7187009e9b55208320498.jpg

修改了“menu-item”上的数据后,对应全局上的数据,也会跟随变化。

2. right.js和left.js中都有挂载itemData,这两个地方挂载的数据不一样,左侧每一个列表,挂载的是它对应的所有数据,右侧每一个商品挂载的是它自己的数据,该点同学理解的是对的。

3. 给right中的每个menu-item挂载数据,是为了修改全局中的数据。

4. 其余问题,同学可以根据如下回答,试着理解一下:

右侧元素通过自定义属性data,将数据是绑定在每一个“menu-item”上,如下:

http://img.mukewang.com/climg/5ef71890094b0a2b08320715.jpg

所以修改“menu-item”上的数据时,需要先获取到,然后再修改,对应如下代码:

http://img.mukewang.com/climg/5ef7189909de758512760331.jpg

由于之前我们将所有商品数据都放在了全局,如下:

http://img.mukewang.com/climg/5ef718aa09453d7410030506.jpg

然后左右结构的元素上,对应绑定了这个全局对象中的某一部分数据,所以右侧元素修改自己身上的数据时,就会改变全局中的数据(对象是引用类型)。也就是说为了能够改变全局中的数据“food_spu_tags”,我们才将它数据中的部分,绑定在对应的dom结构上,这样修改dom元素上的数据就等同于修改全局数据。

修改了全局数据后,购物车会根据该数据进行渲染内容:

http://img.mukewang.com/climg/5ef719b909ec497908320507.jpg

http://img.mukewang.com/climg/5ef719c509a5a54208320598.jpg

所以购物车数据会联动。   

如果我的回答帮到了你,欢迎采纳,祝学习愉快!


0
hurora_Meteor
h 所以,每个地方通过data进行数据挂载时,挂载的属性值都是一个对象是吧,所以使用data再获取到的就是一个对象,因为对象是引用类型,所以使用var itemData = $item.data("itemData");获取到挂载的数据后,再对itemData的属性进行修改时,全局中挂载的数据也就进行了同步的更新?
h020-06-27
共1条回复

好帮手慕久久

2020-06-28

同学你好,理解正确,就是这个意思,祝学习愉快!

0

Aurora_Meteor

提问者

2020-06-27

另外图中获取itemData是倒数第二行,而修改它的chooseCount是在最后一行,这样为什么修改后的chooseCount可以同步到menu-item上呢?获取到的itemData不应该是一个静态的对象,它的属性是给men-item所绑定的数据吗?我觉得应该把数据再次绑定到menu-item上才能更新显示的数据呀

0

0 学习 · 6815 问题

查看课程

相似问题