vue實現(xiàn)書籍購物車功能
更新時間:2021年10月27日 10:58:55 作者:今天會下雨嗎
這篇文章主要為大家詳細(xì)介紹了vue實現(xiàn)書籍購物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了vue實現(xiàn)書籍購物車功能的具體代碼,供大家參考,具體內(nèi)容如下
效果圖
點擊增加、減少購買數(shù)量和移除總價格會變化
代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>書籍購物車</title> <style> table{ border: 1px solid #e9e9e9; border-collapse: collapse; border-spacing: 0; } th, td{ padding: 8px 16px; border: 1px solid #e9e9e9; text-align: left; } th{ background-color: #f7f7f7; color: #5c6b77; font-weight: 600; } </style> </head> <body> <div id="app" v-cloak> <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>{{index+1}}</td> <td>{{item.name}}</td> <td>{{item.date}}</td> <td>{{item.price | showPrice}}</td> <td> <!-- disabled 為true時按鈕禁用 --> <button @click="reduce(index)" v-bind:disabled="item.count <= 1">-</button> {{item.count}} <button @click="increase(index)">+</button> </td> <td><button @click="remove(index)">移除</button></td> </tr> </tbody> </table> <h2>總價格:{{totalPrice | showPrice}}</h2> </div> <h2 v-else>購物車為空</h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> const app = new Vue({ el: "#app", data:{ books:[ { name: '《算法導(dǎo)論》', date: '2021-8-1', price: 85.00, count: 1 }, { name: '《UNIX編程藝術(shù)》', date: '2021-8-2', price: 69.00, count: 1 }, { name: '《編程珠璣》', date: '2021-8-3', price: 35.00, count: 1 }, { name: '《DOM編程藝術(shù)》', date: '2021-8-4', price: 75.00, count: 1 }, { name: '《nodejs深入淺出》', date: '2021-8-5', price: 105.00, count: 1 }, ], }, methods:{ reduce(index){ this.books[index].count--; }, increase(index){ this.books[index].count++; }, remove(index){ this.books.splice(index,1); }, }, computed:{ // 寫在計算屬性里的方法可以直接當(dāng)屬性使用 totalPrice(){ //let totalPrice = 0; // 1. 普通的for循環(huán) // for (let i = 0; i < this.books.length; i++) { // totalPrice += this.books[i].count * this.books[i].price; // } // 2. 步驟稍簡單的普通for循環(huán) // for (let i in this.books) { // totalPrice += this.books[i].count * this.books[i].price; // } // 3. for(let item of this.books) //for(let item of this.books){ //totalPrice += item.count * item.price; //} //return totalPrice; // 4. 高階函數(shù)寫法 reduce // 直接返回結(jié)果 不需要定義變量,也不需要遍歷 return this.books.reduce(function(pre, book){ return pre + book.price * book.count; },0); }, // 過濾器 filters:{ showPrice(price){ return "¥" + price.toFixed(2); } } }) </script> </body> </html>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue3??mark.js?實現(xiàn)文字標(biāo)注功能(案例代碼)
這篇文章主要介紹了vue3??mark.js?實現(xiàn)文字標(biāo)注功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09詳解如何在vue項目中使用eslint+prettier格式化代碼
在開發(fā)中我們需要一種能夠統(tǒng)一團(tuán)隊代碼風(fēng)格的工具,作為強(qiáng)制性的規(guī)范,統(tǒng)一整個項目的代碼風(fēng)格,這篇文章主要介紹了詳解如何在vue項目中使用eslint+prettier格式化代碼,需要的朋友可以參考下2018-11-11vsCode中vue文件無法提示html標(biāo)簽的操作方法
在vsCode中書寫Vue頁面時無法提示,那真是很郁悶的事情,下面這篇文章主要給大家介紹了關(guān)于vsCode中vue文件無法提示html標(biāo)簽的操作方法,需要的朋友可以參考下2023-03-03