Vue 学习笔记(六) P41-P43
原创
©著作权归作者所有:来自51CTO博客作者运妙心藏的原创作品,请联系作者获取转载授权,否则将追究法律责任
文章目录
P – 最终效果图
P40 19-购物车案例-界面搭建
1. books.js
放在目录js下
// books.js
const vm = new Vue({
el: '#app',
data:{
books: [
{
id: 1,
name: '<<算法导论>>',
date: '2006-9',
price: 85.00,
count: 1
},
{
id: 2,
name: '<<Unix编程艺术>>',
date: '2006-2',
price: 59.00,
count: 3
},
{
id: 3,
name: '<<编程珠玑>>',
date: '2016-9',
price: 39.00,
count: 2
},
{
id: 4,
name: '<<代码大全>>',
date: '2019-9',
price: 128.00,
count: 1
},
]
}
})
2. style.css
放在目录 css 下
// style.css
table{
border: 1px solid #000000;
border-collapse: collapse;
border-spacing: 0;
}
th, td{
padding: 8px 16px;
border: 1px solid #000000;
text-align: left;
}
th{
background-color: #f7f7f7;
color: #5c6b77;
font-weight: 600;
}
3. index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Title</title>
<script src="js/vue.js"></script>
<script src="js/books.js"></script>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
</head>
<body>
<div id="app">
<table>
<thead>
<tr>
<th>No.</th>
<th>书籍名称</th>
<th>出版日期</th>
<th>价格</th>
<th>购买数量</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="book in books">
<td v-for="value in book">{{value}}</td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
4. 初次运行问题
表格数据无法显示,错误提示为Cannot find element: #app
原因
引入books.js的位置不对
不应该在中引入,而应该在body中引入,而且必须入在之后
<script src="js/books.js"></script>
移动到</div>之后
这样就能正常显示
5. 界面定制化
自定义不用统一的遍历,不然我们要在里面做判断来决定是否显示各项组件
修改如下
<tbody>
<tr v-for="book in books">
<!-- <td v-for="value in book">{{value}}</td> -->
<td>{{book.id}}</td>
<td>{{book.name}}</td>
<td>{{book.date}}</td>
<td>{{book.price}}</td>
<td>
<button>-</button>
{{book.count}}
<button>+</button>
</td>
<td>
<button>移除</button>
</td>
</tr>
</tbody>
显示
P41 20-购物车案例-过滤器的使用
实现:价格显示小数两位, 价格前面显示¥
目标1: 价格显示小数两位
<td>{{book.price.toFixed(2)}}</td>
目标2: 价格前面显示¥
<td>{{'¥'+book.price.toFixed(2)}}</td>
使用方法来实现目标1和目标2
<td>{{getFinalPrice(book.price)}}</td>
使用过滤器来实现
<td>{{book.price | showPrice}}</td>
P42 21-购物车案例-改变购买数量
- 1 点击+数量加1,点击-数量减1
- 减的数量不能少于1
- 加的数量不能大于5
<td>
<button :disabled="book.count <= 1" @click="decrement(index)">-</button>
{{book.count}}
<button :disabled="book.count >= 5" @click="increment(index)">+</button>
</td>
- 1
==
和 !=
- 2 !==
- 3
>=
- 4
<=
P43 22-购物车案例-移除按钮-最终价格
- 1 点击移除按钮,移除该行
- 2 当表格为空,隐藏整个表格并给出提示
- 3 计算总价并按规定的格式显示
1 移除
<td>
<button @click="removeHandler(index)">移除</button>
</td>
2 判断隐藏
<div id="app">
<div v-if="books.length">
<table>
...
</table>
<h2>总价格:{{}}</h2>
</div>
<div v-else>
<h2>购物车为空</h2>
</div>
</div>
3 显示总价
<h2>总价格:{{totalPrice | showPrice}}</h2>
computed:{
totalPrice() {
let total = 0;
for (let i = 0; i < this.books.length; ++i){
total += this.books[i].price * this.books[i].count;
}
return total;
}
},
// 方法 1
for(let book in/of books){
}
// 方法 2