vue实现购物车功能(商品分类)

new Vue({ el: "#app", data: { cIndex: 0, lists: [ { title: "推荐商品", goods: [ { id: 0, img: './images/goods.png', name: '散称樱桃1', price: '10.00', num: 0 }, { id: 1, img: './images/goods.png', name: '散称樱桃1', price: '10.00', num: 0 } ] }, { title: "推荐商品", goods: [ { id: 2, img: './images/goods.png', name: '散称樱桃2', price: '20.00', num: 0 }, { id: 3, img: './images/goods.png', name: '散称樱桃2', price: '20.00', num: 0 }, ] }, ], carArr: [], appearCar: false, }, computed:{ alltotal:function () { var alltotal = 0; var allNum = 0; for(var i = 0,len = this.lists.length;i<len;i++){ for(var j = 0,goodsLen = this.lists[i].goods.length;j<goodsLen;j++){ alltotal += parseInt(this.lists[i].goods[j].num)*parseFloat(this.lists[i].goods[j].price); allNum += parseInt(this.lists[i].goods[j].num); } } return [alltotal,allNum] }, }, methods: { leftTap: function (index) { this.cIndex = index }, showCar: function () { if (this.carArr.length == 0) { this.appearCar = false } else { this.appearCar = !this.appearCar } }, //商品数量加 addNum: function (data) { data.num++; var carArr = this.carArr; var isCar = false; if (carArr == 0) { carArr.push(data) } for (var i = 0, len = carArr.length; i < len; i++) { if (data.id == carArr[i].id) { isCar = true } } if (!isCar) { carArr.push(data) } }, reduceNum: function (data) { if (data.num <= 0) return; var carArr = this.carArr; data.num--; var isCar = false; for (var i = 0, len = carArr.length; i < len; i++) { if (carArr[i].num <= 0) { carArr.splice(i, 1) } } }, carAddNum: function (index) { this.carArr[index].num++ }, carReduceNum: function (index) { this.carArr[index].num--; if (this.carArr[index].num <= 0) { this.carArr.splice(index, 1) } if (this.carArr.length == 0) { this.appearCar = !this.appearCar } }, // 清空 delCar: function () { confirm('确定清空购物车吗?'); var cur = this.cIndex; var goods = this.lists[cur].goods if (true) { this.carArr = []; this.appearCar = !this.appearCar; for(var i = 0,len = this.lists.length;i<len;i++){ for(var j = 0,goodsLen = this.lists[i].goods.length;j<goodsLen;j++){ this.lists[i].goods[j].num=0; } } } }, Settlement:function () { if(this.alltotal[0]<=0){ console.log('我不动') }else{ window.location.href = 'cashierPay.html' } } } })

html页面

<div v-cloak> <div> <div> <div> <img src='https://www.jb51.net/article/images/sm.png'/> <span>扫码</span> </div> <ul> <template v-for="(item,index) in lists"> <li @click='leftTap(index)' :class="{boxlb_cheak:cIndex==index}"> <span :class="{boxlb_inner_cheak:cIndex==index}">{{item.title}}</span> </li> </template> </ul> </div> <ul> <li v-for="(item,index) in lists[cIndex].goods"> <img :src='item.img'/> <div> <div> <p>{{item.name}}</p> <p>¥{{item.price}}</p> </div> <div> <img @click='reduceNum(item)' v-show="item.num>0" src='https://www.jb51.net/article/images/minus.png'/> <span v-show="item.num>0">{{item.num}}</span> <img @click='addNum(item)' src='https://www.jb51.net/article/images/add.png'/> </div> </div> </li> </ul> </div> <footer> <div> <img src='https://www.jb51.net/article/images/car.png' @click='showCar'/> 共{{alltotal[1]}}件商品 </div> <div>¥{{alltotal[0]}}</div> <div @click='Settlement'>结算</div> </footer> <!-- 购物车 --> <div v-show="appearCar"> <div> <div> <span>已选商品</span> <span @click="delCar">清空</span> </div> <ul> <template v-for='(item,index) in carArr'> <li> <div> <img :src='item.img'/> </div> <div>{{item.name}}</div> <div>¥{{item.price}}</div> <div> <img @click='carReduceNum(index)' src='https://www.jb51.net/article/images/minus.png'/> <span>{{item.num}}</span> <img @click='carAddNum(index)' src='https://www.jb51.net/article/images/add.png'/> </div> </li> </template> </ul> </div> </div> </div>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/562cdcee6b086e1e44f334ff9fd4c971.html