Vue学习笔记03(商品列表添加与删除)

ps:本案例有用到boostrap.css

1、首先搭建好网页页面

  • 1.1、一个标题
<div class="panel-heading">
	<h3 class="panel-title">商品列表</h3>
</div>
  • 1.2、再两个输入框输入商品信息
<div class="panel-body form-inline">
   				id: <input type="text" class="form-control" v-model="id" />
   				name: <input type="text" class="form-control" v-model="NAME" />
   				<input type="button" value="添加" class="btn btn-primary" @click="add" />
</div>
ps: 类 panel-heading   panel-title   panel-body form-inline 等均为boostrap的样式类
  • 1.3、页面顶部完整代码:
<div class="panel panel-primary">
				<div class="panel-heading">
					<h3 class="panel-title">商品列表</h3>
				</div>
				<div class="panel-body form-inline">
					id: <input type="text" class="form-control" v-model="id" />
					name: <input type="text" class="form-control" v-model="NAME" />
					<input type="button" value="添加" class="btn btn-primary" @click="add" />
				</div>
</div>
  • 1.4、在顶部部分下面添加一个表格,同时在data里定义一个数组,存放商品信息,再定义代表商品信息的遍历,然后再在表格里用v-for遍历商品信息
<table class="table table-bordered table-hover table-striped">
				
				<thead>
					<tr>
						<th>id</th>
						<th>NAME</th>
						<th>CTIME</th>
						<th>OPERATION</th>
					</tr>
				</thead>
				<tbody>
					<tr v-for="item in list" :key="item.id">
						<td>{{item.id}}</td>
						<td>{{item.NAME}}</td>
						<td>{{item.CTIME}}</td>
						<td><a @click.prevent="del(item.id)">删除</a></td>  <!-- prevent清除a链接的默认行为 -->
					</tr>
				</tbody>
			</table>

ps:要注意的是,Vue2.0版本之后v-for必须要设置key的属性

  • 1.5、HTML部分完整代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>品牌列表的添加与删除</title>
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
		<link rel="stylesheet" type="text/css" href="bootstrap-3.3.7-dist/css/bootstrap.min.css"/>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			/* #banner{
				width: 100%;
				height: 50px;
				background-color: cadetblue;
				text-align: left;
				line-height: 50px;
				text-indent: 2em;
			} */
		</style>
	</head>
	<body>
		<div id="app">
			<!-- <div id="banner">
				商品列表
			</div> -->
			<div class="panel panel-primary">
				<div class="panel-heading">
					<h3 class="panel-title">商品列表</h3>
				</div>
				<div class="panel-body form-inline">
					id: <input type="text" class="form-control" v-model="id" />
					name: <input type="text" class="form-control" v-model="NAME" />
					<input type="button" value="添加" class="btn btn-primary" @click="add" />
				</div>
			</div>
			<table class="table table-bordered table-hover table-striped">
				
				<thead>
					<tr>
						<th>id</th>
						<th>NAME</th>
						<th>CTIME</th>
						<th>OPERATION</th>
					</tr>
				</thead>
				<tbody>
					<tr v-for="item in list" :key="item.id">
						<td>{{item.id}}</td>
						<td>{{item.NAME}}</td>
						<td>{{item.CTIME}}</td>
						<td><a @click.prevent="del(item.id)">删除</a></td>  <!-- prevent清除a链接的默认行为 -->
					</tr>
				</tbody>
			</table>
		</div>
	</body>
  • 1.6、页面部分效果
    在这里插入图片描述

2、Vue实例部分

2.1、data部分代码

data:{
				id:'',
				NAME:'',
				CTIME:'',
				list:[
					{id:1,NAME:'奔驰',CTIME:new Date()},
					{id:2,NAME:'宝马',CTIME:new Date()},
					{id:3,NAME:'法拉利',CTIME:new Date()},
					{id:4,NAME:'劳斯莱斯',CTIME:new Date()},
					{id:5,NAME:'四驱车',CTIME:new Date()},
				]
			},

2.2、给添加按钮绑定add()方法,给删除按钮添加del()方法

  • 2.2.1、add()方法
    • 首先判断输入信息是否为空
    if(this.id==''||this.name==""){
       				console.log("商品信息不能为空")
       				return false;
       			}
    
    • 然后定义一个变量保存输入的信息
    //获取要输入的商品的内容
    var car = {id:this.id,NAME:this.NAME,CTIME:new Date()};
    
    • 然后把保存的信息插入list数组
    //插入列表数组
       			this.list.push(car);
    
    • 最后清空输入量
    //清空输入框
       			this.id=this.NAME='';
    
  • 2.2.2 、del()方法
    • 根据所点击的删除按钮的id来获取是哪一行的删除被点击了,所以del()方法要传入一个参数item.id
    <td><a @click.prevent="del(item.id)">删除</a></td>
    
    • 然后判断传入的id匹配的是哪个信息的id,然后将 相对应的id商品信息删除
    this.list.some((item,i)=>{
       				if(item.id==id){
       					this.list.splice(i,1);
       					return true;
       				}
       			})
    

2.3、方法部分完整代码

methods:{
				add(){
					if(this.id==''||this.name==""){
						console.log("商品信息不能为空")
						return false;
					}
					console.log("商品添加成功!");
					//获取要输入的商品的内容
					var car = {id:this.id,NAME:this.NAME,CTIME:new Date()};
					//插入列表数组
					this.list.push(car);
					//清空输入框
					this.id=this.NAME='';
					
				},
				del(id){  //更具id删除商品信息
					this.list.some((item,i)=>{
						if(item.id==id){
							this.list.splice(i,1);
							return true;
						}
					})
				}
			}

3、项目完整代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>品牌列表的添加与删除</title>
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
		<link rel="stylesheet" type="text/css" href="bootstrap-3.3.7-dist/css/bootstrap.min.css"/>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
			}
			/* #banner{
				width: 100%;
				height: 50px;
				background-color: cadetblue;
				text-align: left;
				line-height: 50px;
				text-indent: 2em;
			} */
		</style>
	</head>
	<body>
		<div id="app">
			<!-- <div id="banner">
				商品列表
			</div> -->
			<div class="panel panel-primary">
				<div class="panel-heading">
					<h3 class="panel-title">商品列表</h3>
				</div>
				<div class="panel-body form-inline">
					id: <input type="text" class="form-control" v-model="id" />
					name: <input type="text" class="form-control" v-model="NAME" />
					<input type="button" value="添加" class="btn btn-primary" @click="add" />
				</div>
			</div>
			<table class="table table-bordered table-hover table-striped">
				
				<thead>
					<tr>
						<th>id</th>
						<th>NAME</th>
						<th>CTIME</th>
						<th>OPERATION</th>
					</tr>
				</thead>
				<tbody>
					<tr v-for="item in list" :key="item.id">
						<td>{{item.id}}</td>
						<td>{{item.NAME}}</td>
						<td>{{item.CTIME}}</td>
						<td><a @click.prevent="del(item.id)">删除</a></td>  <!-- prevent清除a链接的默认行为 -->
					</tr>
				</tbody>
			</table>
		</div>
	</body>
	
	<script type="text/javascript">
		var vm = new Vue({
			el:'#app',
			data:{
				id:'',
				NAME:'',
				CTIME:'',
				list:[
					{id:1,NAME:'奔驰',CTIME:new Date()},
					{id:2,NAME:'宝马',CTIME:new Date()},
					{id:3,NAME:'法拉利',CTIME:new Date()},
					{id:4,NAME:'劳斯莱斯',CTIME:new Date()},
					{id:5,NAME:'四驱车',CTIME:new Date()},
				]
			},
			methods:{
				add(){
					if(this.id==''||this.name==""){
						console.log("商品信息不能为空")
						return false;
					}
					console.log("商品添加成功!");
					//获取要输入的商品的内容
					var car = {id:this.id,NAME:this.NAME,CTIME:new Date()};
					//插入列表数组
					this.list.push(car);
					//清空输入框
					this.id=this.NAME='';
					
				},
				del(id){  //更具id删除商品信息
					this.list.some((item,i)=>{
						if(item.id==id){
							this.list.splice(i,1);
							return true;
						}
					})
				}
			}
		})
	</script>
</html>

4、最终效果

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值