如图所示,首先数据源来至于JSON ,自己去导即可:
文件分布分为3部分 html vue代码 和 c3样式
提示 关于表格遍历你可以这样写:
<tr v-for="item in books">
<td v-for="i in item">{{i}}</td>
</tr>
但是这样的遍历 仅此适用于直接显示【因为图中 有加按钮 和 其他字符 所以不适合这样】,一般都是这样下面这样:【下面为最终完全代码】
先弄样式:store.css:
table{
border: 1px coral solid;
border-collapse: collapse;
border-spacing: 0;
}
th,td{
padding: 8px 16px;
border: 1px solid coral;
text-align: left;
}
th{
background-color: #f7f7f7;
color: black;
font-weight: 600;
}
然后VUE代码:
store.js:
const app = new Vue({
el: "#app",
data: {
//books:JSON格式数据
books: [
{
id:1,
name:"《JavaScript入门到入土》",
date:"2020-12-12",
price:59.00,
count:1
},
{
id:2,
name:"《JQuery入门到放弃》",
date:"2019-05-23",
price:44.00,
count:1
},
{
id:3,
name:"《VUE 初始到初犯》",
date:"2020-03-06",
price:125.00,
count:1
},
{
id:4,
name:"《HTML5入门到入坟》",
date:"2018-02-03",
price:66.00,
count:1
},
{
id:5,
name:"《CSS3 重新开始到裂开》",
date:"2021-05-05",
price:30.50,
count:1
},
],
},
methods:{
//显示价钱 保留两位小数
showPrice(value){
return '¥' + value.toFixed(2)
},
//添加书的数量
addCount(index){
this.books[index].count++;
},
//减少书的数量
subCount(index){
this.books[index].count--;
},
//移除商品
RemoveHandle(index){
this.books.splice(index,1);
}
},
computed:{
totalPrice(){
let sum = 0;
for (let i = 0; i < this.books.length; i++) {
sum += this.books[i].price * this.books[i].count;
}
return sum.toFixed(2);
}
}
})
其次 H5 代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>购物车</title>
<link rel="stylesheet" href="c3/store.css">
</head>
<body>
<div id="app">
<div v-if="this.books.length != 0">
<table>
<!-- 表头 -->
<thead>
<tr>
<th>id</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>{{showPrice(item.price)}}</td><!--这里直接用方法保留两位小数-->
<td>
<button @click="subCount(index)" :disabled="item.count <= 1">-</button> <!--善用条件 来判断是否为1 是的话按钮禁止-->
{{item.count}}
<button @click="addCount(index)">+</button>
</td>
<td>
<button @click="RemoveHandle(index)">移除</button>
</td>
</tr>
</tbody>
</table>
<h2>总价钱:{{totalPrice}}</h2>
</div>
<p v-else>您的购物车为空!</p>
</div>
<script src="js/vue.js"></script>
<script src="js/store.js"></script>
</body>
</html>
案例总结:
1.其实里面有些东西可以用到过滤器,但是我这个VUE没有过滤器这个东西,所以呢就没用,过滤器可以自己去了解了解即可,
2.最顶部的内个if else 是做一个空判断的,为空就显示您的购物车为空
3.总价钱用的是for循环,其实可以升级一下 for of 循环的
4.关于遍历表格 v-for ,因为有些表格有其他按钮什么的 所以用这种,如果光是遍历 可以用最上面内种.
5.移除内个操作 ,其实直接用万能方法 splice 即可.
6.其实多用内些语法糖绑定 + 表达式,因为超级好用
7.善用内个 index (v-for) 的index
8.多练多用多记
作者:咸瑜