利用Vue方法实现一个简单的购物车

标题

效果如上:

代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
		<script type="text/javascript" src="js/vue.js" ></script>
		<title>购物车</title>
		<style>
			*{
				margin: 0;
				padding: 0;
			}
			#app{
				margin: 30px auto;
				width: 70%;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<div>
				<table class="table table-bordered text-center table-hover">
					<tr>
						<td>商品名称</td>
						<td>商品价格</td>
						<td>商品数量</td>
						<td>操作</td>
					</tr>
					<tr v-for="(item,index) in goods">
						<td>{{item.name}}</td>
						<td>{{item.price}}</td>
						<td>{{item.count}}</td>
						<td>
							<button class="btn btn-danger" @click="add(index)"> + </button>
							<button class="btn btn-default" @click="reduce(index)"> - </button>
						</td>
					</tr>
					<tr>
						<td colspan="4">
							<button class="btn btn-success" @click="clickaddress">编辑收货地址</button>
						</td>
					</tr>
					<tr class="text-right">
						<td colspan="4">
							<p>总价格:{{allprice}} </p>
							<p>总数量:{{allcount}} </p>
							<p>收货地址:{{val}} </p>
						</td>
					</tr>
				</table>
				
				<hr />
				<form v-show="isshow">
					<div class="form-group">
						<input type="text"  placeholder="请输入收货地址" class="form-control" v-model="val"/>
					</div>
					<div class="form-group">
						<button class="btn btn-info" @click="ok" type="button">确定</button>
					</div>
				</form>
				
			</div>
		</div>
		<script>
			new Vue({
				el:"#app",
				data:{
					goods:[
						{name:"帽子",price:"100",count:"1"},
						{name:"上衣",price:"100",count:"1"},
						{name:"裤子",price:"100",count:"1"},
						{name:"袜子",price:"100",count:"1"},
						{name:"鞋子",price:"100",count:"1"}
					],
					isshow:false,
					val:"",
					
				},
				methods:{
					add(index){
						this.goods[index].count++
					},
					reduce(index){
						if(this.goods[index].count==0){
							this.goods[index].count==0
						}else{
							this.goods[index].count--
						}
					},
					clickaddress() {
						this.isshow = true
					},
					ok(){
						this.isshow = false
						
					}
					
				},
				computed:{
					allprice(){
						var sum=0
						for (var i=0;i<this.goods.length;i++) {
							sum += parseInt(this.goods[i].price)*parseInt(this.goods[i].count)
						}
						return sum
					},
					allcount(){
						var sum = 0
						for(var i=0;i<this.goods.length;i++){
							sum += parseInt(this.goods[i].count)
						}
						return sum
					}
				}
			})
		</script>
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/this_name_true/article/details/86102036
今日推荐