vue小购物车

200 阅读1分钟

可以自己重新引用一下vue.js的包

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#box {
				width: 600px;
				border: 1px solid #00FFFF;
			}

			.ul li {
				list-style: none;
				display: inline-block;
				border-right: 1px solid #00FFFF;
				padding: 0 25px;
			}
			li{
				list-style: none;
			}
		</style>
	</head>
	<body>
		<script type="text/javascript" src="../node_modules/vue/dist/vue.min.js"></script>
		<div id="box">
			<ul class="ul">
				<li v-for="item in list">
					<h3>{{item.name}}</h3>
					<h3>{{item.price+'元/个'}}</h3>
					<button @click="add(item)">购买</button>
				</li>
			</ul>
			<hr />
			<h1>购物车</h1>
			<ul>
				<li v-for="(item,index) in cart">
					<h3>{{item.name}}</h3>
					<h3 v-model="item.num">{{'数量:'+item.num+'个'}}</h3>
					<button @click="removeNum(index)">-</button>
					<span>{{item.num}}</span>
					<button @click="addNum(index)">+</button>
					<h3>{{'价格:'+item.num*item.price}}</h3>
					<hr/>
				</li>
				总价:<h1>{{addMoney()+'元'}}</h1>
				
			</ul>
		</div>
		<script type="text/javascript">
			new Vue({
				el: '#box',
				// 属性
				data: {
					list: [{
							name: '西瓜',
							price: '15',
							num: 0
						},
						{
							name: '香蕉',
							price: '14',
							num: 0
						},
						{
							name: '橘子',
							price: '22',
							num: 0
						},
						{
							name: '哈密瓜',
							price: '21',
							num: 0
						},
					],
					cart: [

					],

				},
				// 方法
				methods: {
					addNum(index) {
						this.cart[index].num++;
					},
					removeNum(index) {
						this.cart[index].num--;
						if(this.cart[index].num<0){
							this.cart[index].num = 0;
						}
					},
					add(data) {
						if (this.cart.findIndex(item => item.name === data.name) !== -1) {
							// 存在的话就 不添加
							data.num++;
						}else{
							data.num=1;
							this.cart.push(data);
						}
					},
					// 总价
					addMoney(){
						var sum =0;
						for(var i = 0;i<this.cart.length;i++){
							let money = this.cart[i].num*this.cart[i].price;
							sum += money;
						}
						return sum;
					}
				}
			});
		</script>
	</body>
</html>