日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue實現購物車案例

瀏覽:214日期:2023-01-17 15:43:26

本文實例為大家分享了vue實現購物車的具體代碼,供大家參考,具體內容如下

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <meta name='viewport' content='width=device-width, initial-scale=1.0'> <meta http-equiv='X-UA-Compatible' content='ie=edge'> <title>購物車案例</title> <script src='https://cdn.jsdelivr.net/npm/vue/dist/vue.js'></script></head><style> *{ padding: 0; margin:0 } ul li{ width: 1200px; display: flex; align-items: center; justify-content: center; } li div,.total{ display: inline-block; width:200px; height: 50px; line-height: 50px; text-align: center; } button{ width: 60px; height: 40px; text-align: center; line-height: 40px; }</style><body> <div id='app'> <ul> <goodsitem v-for='item in goodslist' :item='item' :key='item.id' @onchange='(type)=>{handleCount(type,item)}' @ondelete='()=>{handleDelete(item.id)}'> </goodsitem> <div style='padding-left: 113px'>總價:{{total}}</div> </ul> </div></body><script> var computed={ props:{ count:{ type:Number, require:true } }, methods:{ handleCount(type){ this.$emit(’onchange’,type) } }, template:`<div style='width:200px'> <button @click='handleCount(’sub’)'>-</button> <span>{{count}}</span> <button @click='handleCount(’add’)' >+</button> </div> ` } var goodsitem={ props:{ item:{ type:Object, require:true } }, methods:{ handleCount(type){ this.$emit(’onchange’,type) }, handleDelete(){ this.$emit(’ondelete’) } }, components:{ computed }, template:`<li> <div>{{item.goodsName}}</div> <div>{{item.price}}</div> <computed :count='item.count' @onchange='handleCount'></computed> <div>{{item.sum}}</div> <div><button @click='handleDelete'>刪除</button></div> </li> ` } var app=new Vue({ el:'#app', data:{ goodslist:[{ id:1, goodsName:'小可愛', price:100, count:1, sum:100 },{ id:2, goodsName:'小可愛', price:200, count:2, sum:400 },{ id:3, goodsName:'小可愛', price:300, count:3, sum:900 },{ id:4, goodsName:'小可愛', price:400, count:1, sum:400 }, ] }, methods:{ handleCount(type,item){ if(type==’add’){ item.count+=1 }else{ if(item.count==1){ this.handleDelete(item.id) return } item.count-=1 } item.sum=item.count*item.price }, handleDelete(id){ return this.goodslist=this.goodslist.filter((item)=>{ return id!=item.id }) } }, computed:{ total(){ return this.goodslist.reduce((total,item)=>{ return total+=item.sum },0) } }, components:{ goodsitem } })</script></html>

實現效果圖:

vue實現購物車案例

小編再為大家分享一段收藏的vue購物車邏輯代碼,也謝謝原作者的分享

<template> <div class='hello'> <div class='main'> <div v-if='hasList'> <div class='cart-box'> <div v-for='(item,index) in carts' :key='index'> <!-- <icon v-if='item.selected' type='success' color='red' data-index='index' @click='selectList'/> <icon v-else type='circle' data-index='index' @click='selectList'/> --> <router-link to='/'><img :src='http://m.b3g6.com/bcjs/item.image' /></router-link> <p class='cart-pro-name'>{{item.title}}</p> <p class='cart-pro-price'>¥{{item.price}}</p> <div class='cart-count-box'> <p @click='minusCount(item.id)' data-obj='obj' data-index='index'>-</p> <p class='cart-count-num'>{{item.num}}</p> <p @click='addCount(item.id)' data-index='index'>+</p> </div> <p @click='deleteList' data-index='index'>×</p> </div> </div> <div class='cart-footer'> <!-- <icon v-if='selectAllStatus' type='success_circle' color='#fff' @click='selectAll'/> <icon v-else type='circle' color='#fff' @click='selectAll'/> --> <div class='order-icon'> <router-link to='/'><img src='http://m.b3g6.com/static/image/icon3.png' /></router-link> </div> <p>全選</p> <p class='cart-toatl-price'>¥{{totalPrice}}</p> </div> </div> <div v-else> <div class='cart-no-data'>購物車是空的哦~</div> </div></div> </div></template><script> // import {Toast} from ’vant’export default { data () { return { carts: [{id: 1, title: ’新鮮芹菜 半斤’, image: ’../../static/image/s5.png’, num: 4, price: 0.01, selected: true}, {id: 2, title: ’素米 500g’, image: ’../../static/image/s6.png’, num: 1, price: 0.03, selected: true}], hasList: true, totalPrice: 0, selectAllStatus: true, obj: { name: ’hello’ } } }, created () { // this.$set({ // hasList: true, // carts: [ // {id: 1, title: ’新鮮芹菜 半斤’, image: ’../../static/image/s5.png’, num: 4, price: 0.01, selected: true}, // {id: 2, title: ’素米 500g’, image: ’../../static/image/s6.png’, num: 1, price: 0.03, selected: true} // ] // }) this.getTotalPrice() }, methods: { selectList (e) { console.log(e) let carts = this.carts let index = 1 const selected = carts[index].selected carts[index].selected = !selected this.setData({ carts: carts }) this.getTotalPrice() }, deleteList (e) { const index = e.currentTarget.dataset.index let carts = this.carts carts.splice(index, 1) this.$set({ carts: carts }) if (!carts.length) { this.$set({ hasList: false }) } else { this.getTotalPrice() } }, selectAll (e) { let selectAllStatus = this.data.selectAllStatus selectAllStatus = !selectAllStatus let carts = this.carts for (let i = 0; i < carts.length; i++) { carts[i].selected = selectAllStatus } this.$set({ selectAllStatus: selectAllStatus, carts: carts }) this.getTotalPrice() }, addCount (e) { let carts = this.carts let num = carts[e - 1].num num = num + 1 carts[e - 1].num = num this.$set(this.carts, carts) this.getTotalPrice() }, minusCount (e) { // const obj = e.currentTarget.dataset.obj let carts = this.carts let num = carts[e - 1].num if (num <= 1) { return false } num = num - 1 carts[e - 1].num = num this.$set(this.carts, carts) this.getTotalPrice() }, getTotalPrice () { let carts = this.carts let total = 0 for (let i = 0; i < carts.length; i++) { if (carts[i].selected) { total += carts[i].num * carts[i].price } } this.$set({ carts: carts, totalPrice: total.toFixed(2) }) } }}</script><!-- Add 'scoped' attribute to limit CSS to this component only --><!-- scoped css樣式僅僅在當前模板使用--><style scoped>.cart-box{ padding-bottom: 50px;}.cart-list{ position: relative; padding: 10px 10px 10px 142px; height: 92px; border-bottom: 1px solid #e9e9e9;}.cart-list .cart-pro-select{ position: absolute; left: 10px; top: 45px; width: 25px; height: 25px;} .cart-list .cart-thumb{ position: absolute; top: 10px; left: 42px; width: 92px; height: 92px;}.cart-list .cart-pro-name{ display: inline-block; width: 150px; height: 52px; line-height: 25px; overflow: hidden;}.cart-list .cart-pro-price{ display: inline-block; float: right; height: 52px; line-height: 25px;}.cart-list .cart-count-box{ position: absolute; left: 142px; bottom: 10px; width: 125px; height: 40px;}.cart-list .cart-count-box p{ display: inline-block; line-height: 40px; p-align: center;}.cart-count-down,.cart-count-add{ position: absolute; top:-5px; font-size: 22px; width: 25px; height: 100%;}.cart-count-num{ margin-left: 17px; width: 75px;}.cart-del{ position: absolute; right: 10px; bottom: 0px; width: 40px; height: 40px; line-height: 40px; p-align: center; font-size: 22px;}.cart-footer{ position: fixed; bottom: 15%; left: 0; width: 100%; height: 45px; line-height: 45px; box-sizing: border-box; background: #AB956D; color: #fff;}.total-select{ position: absolute; left: 10px; top: 12px; width: 22px; height: 22px;}.order-icon{ position: absolute; right: 20px; top: 12px; width: 24px; height: 24px;}.order-icon image,.order-icon navigator{ display: block; width: 24px; height: 24px;}.cart-toatl-price{ float: right; width: 60px;} .cart-no-data{ padding:20px 0; color: #999; p-align: center;}</style>

更多文章可以點擊《Vue.js前端組件學習教程》學習閱讀。

關于vue.js組件的教程,請大家點擊專題vue.js組件學習教程進行學習。

更多vue學習教程請閱讀專題《vue實戰教程》

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩精品免费观看视频完整| 日韩一级不卡| 亚洲精品观看| 日韩精品一二三四| 久久亚洲风情| 国产亚洲综合精品| 另类av一区二区| 久久成人精品| 最新国产精品| 涩涩涩久久久成人精品| 亚洲人成毛片在线播放女女| 丝袜美腿亚洲一区二区图片| 在线观看一区| 欧美亚洲一级| 开心激情综合| 日韩大片免费观看| 亚洲特色特黄| 免费看黄色91| 国产区精品区| 中国字幕a在线看韩国电影| 亚洲天堂av影院| 伊人久久av| 久久影视一区| 蜜桃久久av一区| 欧美精品三级在线| 精品久久视频| 在线成人动漫av| 国产精品毛片| 国产亚洲观看| 日韩在线短视频| 国产亚洲一区在线| 国产欧美高清| 欧美日韩视频网站| 一区在线免费| 欧美日韩亚洲一区三区| 国产videos久久| 久久国产日韩| 亚洲精品婷婷| 四季av一区二区凹凸精品| 91精品精品| 日韩欧美中文字幕电影 | 日韩综合一区二区| 麻豆国产欧美一区二区三区| 欧美日韩在线观看视频小说| 日韩三级视频| 亚洲va中文在线播放免费| 日韩影院精彩在线| 六月丁香综合在线视频| 影视先锋久久| 日韩成人精品一区二区三区| 欧美激情另类| 亚洲欧洲国产精品一区| 精品视频高潮| 亚洲激情中文在线| 国产精品蜜月aⅴ在线| 国产在线成人| 国产精品久久久一区二区| 激情久久五月| 麻豆国产欧美一区二区三区| 免费精品视频| 成人片免费看| 欧美日韩调教| 日韩亚洲国产欧美| 免费在线观看一区| 美女少妇全过程你懂的久久| 国产精品久久777777毛茸茸| 狠狠爱www人成狠狠爱综合网| 国产欧美日韩免费观看| 欧美在线亚洲| 精品国产乱码久久久久久樱花| 蜜乳av另类精品一区二区| 国产一区国产二区国产三区 | 午夜精品福利影院| 99久久夜色精品国产亚洲狼 | 在线观看精品| 国产亚洲高清一区| 丝袜美腿亚洲一区二区图片| av资源亚洲| 国产精品任我爽爆在线播放 | 亚洲女同av| 国产伦精品一区二区三区视频| 99在线观看免费视频精品观看| 精品一区二区男人吃奶 | 日韩专区一卡二卡| 日韩在线精品| 久久精品国产久精国产| 午夜视频一区二区在线观看| 久久精品影视| 韩国一区二区三区视频| 日本a级不卡| 国产亚洲综合精品| 伊人精品一区| 伊人久久视频| 欧美交a欧美精品喷水| 亚洲69av| 欧美日韩国产探花| 亚洲电影有码| 中文字幕在线免费观看视频| 国产精品入口久久| 91大神在线观看线路一区| 亚洲一区观看| 在线国产一区| 欧美1级日本1级| 日韩欧美二区| 日本久久精品| 精品免费视频| 精品丝袜久久| 免费视频一区二区三区在线观看| 国产亚洲电影| 国产日韩欧美高清免费| 日本大胆欧美人术艺术动态| 精品日韩毛片| 国产高清亚洲| 国产精品qvod| 欧美国产极品| 国产激情久久| 精品视频网站| 色综合五月天| 天堂√8在线中文| 国产传媒在线观看| 成人国产精品| 日产精品一区二区| 福利在线免费视频| zzzwww在线看片免费| 精品国产乱码久久久| 国产精品777777在线播放| 国产精品任我爽爆在线播放| 久久久91麻豆精品国产一区| 国产成人久久精品麻豆二区| 丰满少妇一区| 成人综合一区| 香蕉视频亚洲一级| 1024精品一区二区三区| 伊人久久婷婷| 亚洲最大av| 欧美日韩a区| 麻豆久久久久久| 日韩电影免费网站| 久久精品国产99久久| 欧美日韩国产高清| 午夜亚洲福利在线老司机| 亚洲一区av| 国产日韩高清一区二区三区在线| 国产精品中文字幕亚洲欧美| 麻豆精品av| 深夜福利视频一区二区| 亚洲大全视频| 中文字幕亚洲在线观看| 97精品国产99久久久久久免费| 日韩国产欧美在线视频| 国产欧美三级| 国产99在线| 亚洲一区亚洲| 欧美久久香蕉| 天堂中文av在线资源库| 99久久精品国产亚洲精品| 美女国产精品| 欧美日韩一区二区高清| 国产aⅴ精品一区二区三区久久| 日韩欧美一区免费| 亚洲免费婷婷| 国产欧美日韩视频在线| 91欧美在线| 日韩午夜av| 国产探花在线精品一区二区| 首页国产精品| 美美哒免费高清在线观看视频一区二区| 国产欧美亚洲一区| 快播电影网址老女人久久| 天使萌一区二区三区免费观看| 日本不卡视频在线| 福利一区视频| 日韩中文字幕av电影| 麻豆精品视频在线观看视频| 成人精品中文字幕| 日本一区免费网站| 日韩免费看片| 亚洲精品国产日韩| 激情综合五月| 鲁大师成人一区二区三区| 美腿丝袜在线亚洲一区| 婷婷综合亚洲| 国产精品伦一区二区| 99久久婷婷| 国产日韩一区| 欧美日韩一区二区综合| 91亚洲无吗| 极品日韩av| 麻豆极品一区二区三区| 免费久久99精品国产自在现线| 久久精品国产成人一区二区三区| 一区免费视频| 精品国产亚洲一区二区三区在线 | 黑丝美女一区二区| 国产精品亚洲欧美一级在线| 欧美亚洲精品在线| 国产黄色精品| 亚洲九九精品| 日韩中文在线电影| 日韩1区2区3区|