<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="app">
<div v-if="books.length">
<table>
<thead>
<tr>
<th></th>
<th>书籍名称</th>
<th>出版日期</th>
<th>价格</th>
<th>购买数量</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item,index) in books">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.date}}</td>
<td>{{item.price | showPrice}}</td>
<td>
<button @click="decrement(index)" v-bind:disabled="item.count <= 1">-</button>
{{item.count}}
<button @click="increment(index)">+</button>
</td>
<td><button @click="removeHandle">移除</button></td>
</tr>
</tbody>
</table>
<h2>总价格:{{totalPrice | showPrice}}</h2>
</div>
<h2 v-else>购物车为空,请添加书籍</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script src="main.js"></script>
<script>
</script>
</body>
</html>

main.js文件
const app = new Vue({
el: '#app',
data: {
books: [
{
id: 1,
name: '《JavaScript百炼成仙》',
date: '2020-09',
price: 128.00,
count: 1
},
{
id: 2,
name: '《Spring Boot+Vue全栈开发实战》',
date: '2021-02',
price: 89.00,
count: 1
},
{
id: 3,
name: '《Python Django Web 从入门到项目实战》',
date: '2021-09',
price: 128.00,
count: 1
},
{
id: 4,
name: '《Prometheus云原生监控 运维与开发实战》',
date: '2020-06',
price: 89.00,
count: 1
},
{
id: 5,
name: '《Kubernetes进阶实战》',
date: '2021-03',
price: 149.00,
count: 1
},
]
},
methods: {
decrement(index) {
this.books[index].count--
},
increment(index) {
this.books[index].count++
},
removeHandle(index) {
this.books.splice(index, 1)
},
},
computed: {
totalPrice() {
let totalPrice = 0
for (let i = 0; i < this.books.length; i++) {
totalPrice += this.books[i].price \* this.books[i].count
}
return totalPrice
}
},
filters: {
showPrice(price) {
return '¥' + price.toFixed(2)
}
}
})
### 最后
>![](https:
**开源分享:https: