国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Vue實現(xiàn)購物車實例代碼兩則

瀏覽:83日期:2023-01-17 14:40:26

一、第一種比較簡單

效果圖

Vue實現(xiàn)購物車實例代碼兩則

實現(xiàn)代碼:

<!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實現(xiàn)的簡單響應式購物車案例

實現(xiàn)結(jié)果

Vue實現(xiàn)購物車實例代碼兩則

如上,所有書類數(shù)據(jù)存在數(shù)組里,遍歷顯示在表格中,點擊+和-可以實現(xiàn)數(shù)量和總價格的響應式變化,其中,減號到1時便添加了disabled類型,無法點擊。 價格顯示時通過過濾器顯示的,加上Z¥符號和兩位小數(shù)。項目結(jié)構(gòu)為三個文件。

index.html

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Title</title> <link rel='stylesheet' href='http://m.cgvv.com.cn/bcjs/style.css' rel='external nofollow' ></head><body><div id='app'> <div v-if='books.length'> <table> <thead> <tr> <th></th> <th>書籍日期</th> <th>出版日期</th> <th>價格</th> <th>購買數(shù)量</th> <th>操作 </th> </tr> </thead> <tbody> <tr v-for='(item,index) in books'> <!--<td v-for='value in item'>{{value}}</td>--> <td>{{item.id}}</td> <td>{{item.name}}</td> <td>{{item.date}}</td> <!--<td>{{getFinalPrice(item.price)}}</td> 下面是過濾器語法--> <td>{{item.price | showPrice}}</td> <td> <button @click='increment(index)' v-bind:disabled='item.count<=1'>-</button> {{item.count}} <button @click='decrement(index)'>+</button> </td> <td> <button @click='removeHandler(index)'>移除</button> </td> </tr> </tbody> </table> <h2>總價格: {{totalprice | showPrice}}</h2> </div> <h2 v-else> 購物車為空</h2></div><script src='http://m.cgvv.com.cn/js/vue.js'></script><script src='http://m.cgvv.com.cn/bcjs/main.js'></script><script></script></body></html>

main.js

const app = new Vue({ el:'#app', data: { books: [ { id: 1, name: ’算法導論’, date: ’2019-01-10’, price: 85.00, count: 1 }, { id: 2, name: ’計算機導論’, date: ’2019-02-14’, price: 90.00, count: 2 }, { id: 3, name: ’科學導論’, date: ’2019-09-10’, price: 85.21, count: 1 }, { id: 4, name: ’網(wǎng)絡導論’, date: ’2019-08-21’, price: 19.02, count: 1 }, ] }, methods:{ getFinalPrice(price) { return ’$’ + price.toFixed(2) }, increment(index){ /*if(this.books[index].count <= 1) return*/ this.books[index].count-- }, decrement(index){ this.books[index].count++ }, removeHandler(index){ this.books.splice(index,1) } }, filters:{ showPrice(price){ return ’$’ + price.toFixed(2) } }, computed:{ totalprice(){ let tprice = 0 for(let i = 0; i< this.books.length; i++) { tprice += this.books[i].price * this.books[i].count } return tprice } }})

style.css

table{ border: 1px solid #e9e9e9; border-collapse: collapse; bordre-spacing: 0;}th, td { padding: 8px 16px; border: 1px solid #e9e9e9; text-align: left;}th{ backgroud-color: #f7f7f7; color: #5c6b77; font-weight: 600;}

到此這篇關(guān)于Vue實現(xiàn)購物車實例代碼的文章就介紹到這了,更多相關(guān)Vue 購物車內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品午夜久久久伊人 | 看国产一级毛片 | 中文字幕一区中文亚洲 | 99免费精品视频 | 精品一区二区三区高清免费不卡 | 久久99精品久久久久久国产越南 | 国产精品1区2区 | 国产成人综合精品 | 一道精品视频一区二区三区图片 | 久久久国产99久久国产一 | 欧美精品专区免费观看 | 精品日韩欧美一区二区三区 | 日韩在线小视频 | 久久一本精品 | 成人18视频在线 | 国产成人啪精品午夜在线观看 | 国产猛烈无遮掩视频免费网站男女 | 午夜影院免费入口 | 一级国产视频 | 日本人视频网站一 | 日本一级特大毛片 | 在线成人免费 | 欧美人成片免费看视频不卡 | 草草草在线观看 | 国产精品一区二区手机在线观看 | 男人天堂网在线观看 | 久久久久久亚洲精品不卡 | 国产成人综合高清在线观看 | 老司机成人免费精品视频 | 鲁大师成人精品视频 | 久草视频新| 在线精品亚洲欧洲第一页 | 成年网站在线 | mm在线视频免费看 | 国产大片免费天天看 | 国产的一级片 | 99成人精品 | 欧美国产三级 | 亚洲视频免费播放 | 久久88香港三级台湾三级中文 | 91精品欧美一区二区综合在线 |