本文参考:Vue Cli(脚手架)实现购物车小案例 - - php中文网博客
效果图:
编写流程:
1、首先通过@vue/cli创建工程
vue create totalprice
2、改写App.vue代码如下:
<template>
<div>
<div v-if="cartlist.length <= 0">你没有选择的商品,购物车为空,去购物</div>
<table v-else>
<caption> <!--表格标题-->
<h1>购物车</h1>
</caption>
<tr>
<th>选中</th>
<th>编号</th>
<th>商品名称</th>
<th>商品价格</th>
<th>购买数量</th>
<th>操作</th>
</tr>
<tr v-for="(item, index) in cartlist" :key="item.id">
<td><input type="checkbox" v-model="item.checkbox"></td>
<td>{{ item.id }}</td>
<td>{{ item.name }}</td>
<td><small>¥</small>{{ item.price.toFixed(2) }}</td>
<td>
<button @click="item.count--" :disabled="item.count <= 1">-</button>
{{ item.count }}
<button @click="item.count++">+</button>
</td>
<td><button @click.prevent="del(index)">删除</button></td>
</tr>
<tr>
<td colspan="3" align="center">总价</td>
<td colspan="3" align="center">{{ totalPrice }}</td>
</tr>
</table>
</div>
</template>
<script>
export default {
name: 'app',
data(){
return{
cartlist:[{
id: 1,
checkbox: true,
name: '《细说PHP》',
price: 10,
count: 1
},{
id: 2,
checkbox: true,
name: '《细说网页制作》',
price: 10,
count: 1
},{
id: 3,
checkbox: true,
name: '《细说JavaScript语言》',
price: 10,
count: 1
},{
id: 4,
checkbox: true,
name: '《细说DOM和BOM》',
price: 10,
count: 1
},{
id: 5,
checkbox: true,
name: '《细说Ajax与jQuery》',
price: 10,
count: 1
},{
id: 6,
checkbox: true,
name: '《细说HTML5高级API》',
price: 10,
count: 1
}
]
}
},
methods:{
del(index){
this.cartlist.splice(index, 1)
}
},
computed:{
totalPrice(){
let sum = 0;
for(let book of this.cartlist){
if(book.checkbox){
sum += book.price * book.count;
}
}
return '¥' + sum.toFixed(2)
}
}
}
</script>
<style scoped>
table{
width: 600px;
border: 1px solid #888888;
border-collapse: collapse;
}
th{
background-color: #ccc;
}
td,th{
border: 1px solid #888888;
padding: 10px;
}
</style>
3、代码中相关内容说明:
(1)<caption>为table的标题
(2)在组件中使用v-for时,必须添加:key属性,否则会报错,为了性能考虑
(3)colspan属性,表示某个td横跨的列数
(4)splice()函数用于从当前数组中移除一部分连续的元素。参数包括start和deleteCount。
(5)border-collapse,折叠样式