4000-520-616
欢迎来到免疫在线!(蚂蚁淘生物旗下平台)  请登录 |  免费注册 |  询价篮
主营:原厂直采,平行进口,授权代理(蚂蚁淘为您服务)
咨询热线电话
4000-520-616
当前位置: 首页 > 新闻动态 >
新闻详情
Vue实现仿淘宝商品详情属性选择的功能_yx_cos的博客-CSDN博客
来自 : CSDN技术社区 发布时间:2021-03-25

先看下效果图 同个属性内部单选 属性与属性之间可以多选

\"\"

主要实现过程

所使用到的数据类型是 一个大数组里面嵌套了另一个数组 具体格式如下

 attrAndValuees: [ { attrId : 1, attrName : 味道 , valuees : [ { attrId : 1, value : 橘子味 }, { attrId : 2, value : 草莓味 } ] }, { attrId : 2, attrName : 容量 , valuees : [ { attrId : 4, value : 100ml }, { attrId : 6, value : 300ml } ] }]

相关的Html 代码

 div class sortItem v-for (item,index) in attrAndValuees :key item.attrId span {{item.attrName}}: /span ul li v-for (itemm,ind) in item.valuees :key itemm.attrId :class { cur :sel[index] ind} click select(index,ind) class hand {{itemm.value}} /li /ul /div 

实现的原理 新建一个数组 数组的每一项代表一个属性值 由这个数组中的值来改变对应属性的样式

在data里新增一个数组

 data () { return { sel: []}
在methods中新增一个select方法 在点击属性值的时候调用
select: function (index, ind) { this.sel[index] ind; this.$set(this.sel, index, ind) // this.sel this.sel.concat([]); }

就以上几个小步骤就可以实现这个效果了 是不是so easy~

不过这中间需要注意的有几点

Vue之所以能够监听Model状态的变化 是因为JavaScript语言本身提供了Proxy或者Object.observe()机制来监听对象状态的变化。但是 对于数组元素的赋值 却没有办法直接监听 因此 在这个项目中我们用了set的方法来给数组赋值或者用concat连接一个空数组来对数组进行重新赋值。

若你想了解更多关于数组赋值的知识 可访问官网 https://cn.vuejs.org/v2/guide/list.html

 


2018年9月7日{{item.attrName}}: <liv-for="(itemm,ind) in item.valuees":key="itemm.attrId":class="{'cur':sel[index] == ind}"@click="select(index,in...Vue实现仿淘宝商品详情属性选择的功能先看下效果图:(同个属性内部单选,属性与属性之间可以多选)主要实现过程:所使用到的数据类型是(一个大数组里面嵌套了另一个数组)具体格式如下: attrAndValuees: [ { 'attrId': 1, 'attrName': '味道', 'valuees': [ { ...Vue实现仿淘宝商品详情属性选择的功能

本文链接: http://mattrid.immuno-online.com/view-772287.html

发布于 : 2021-03-25 阅读(0)