Vue常用特性(案列:图书管理)

常用特性:
表单操作:
自定义指令:内置的指令不满足需求(获取表单焦点)
计算属性:计算逻辑比较复杂,计算属性内容简洁(统计数量)
过滤器:格式化数据,将首字母大写,转换日期格式
侦听器:数据变化时执行异步或开销较大的操作(验证数据是否存在)
生命周期:挂载更新销毁(数据处理)

数组相关API:
1.变异方法(修改原有数据):push(),pop(),shift(),unshift(),splice(),sort(),reverse()
2.替换数组(生成新的数组):
filter(),concat(),slice()

数组响应式变化:
Vue.set(vm.items,indexOfitem,newValue)
Vue.$set(vm.items,indexOfitem,newValue)

案例:图书管理

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style type="text/css">
		.grid{
			margin: auto;
			width: 530px;
			text-align: center;
		}
		.grid table{
			width: 100%;
			border-collapse: collapse;
		}
		.grid th,td {
            padding: 10;
            border: 1px dashed orange;
            height: 35px;
            line-height: 35px;
      }

		.grid th {
			background-color: #F3DCAB;
		}
		.grid .book{
            padding-bottom: 10px;
            padding-top: 5px;
            background-color: #F3DCAB;
		}
	</style>
</head>
<body>
	<div id="app">
	<div class="grid">
		<div>
			<h1>图书管理</h1>
			<div class="book">
				<div>
					<label for="id">
						编号:
					</label>
					<input type="text" id="id"  v-model='id'                                :disabled="flag">
					<label for="name">
						名称:
					</label>
					<input type="text" id="name" v-model='name'>
                    <button @click='handle'>提交</button>
				</div>
			</div>
		</div>
		<table>
			<thead>
				<tr>
					<th>编号</th>
					<th>名称</th>
					<th>时间</th>
					<th>操作</th>
				</tr>
			</thead>
			<tbody>
				<tr :key='item.id' v-for='item in books'>
					<td>{{item.id}}</td>
					<td>{{item.name}}</td>
					<td>{{item.date}}</td>
					<td>
						<a href="" @click.prevent='toEdit(item.id)'>修改</a>
						<span>|</span>
						<a href="" @click.prevent='deleteBook(item.id)'>删除</a>

					</td>
				</tr>
				
			</tbody>
		</table>
	</div>
</div>
	<script type="text/javascript" src="js/vue.js"></script>
	<script type="text/javascript">
		var vm=new Vue({
          el:'#app',
          data:{
          	 flag: false,
          	id:'',
          	name:'',
          	books:[{
          		id:'1',
          		name:'三国演义',
          		date:''
          	},{
          		id:'2',
          		name:'水浒传',
          		date:''
          	},{
          		id:'3',
          		name:'红楼梦',
          		date:''
          	},{
          		id:'4',
          		name:'西游记',
          		date:''
          	}]
          },
          methods:{
          	handle:function(){
          		if(this.flag){
          			//编辑操作
          			this.books.some((item)=>{
          				if(item.id==this.id){
          					item.name=this.name;
          					//完成更新操作要终止循环
          					return true;
          				}
          			});
          			this.flag=false;

          		}else{
          			//添加图书
          		var book={};
          		book.id=this.id;
          		book.name=this.name;
          		book.date='';
          		this.books.push(book);
          		//清空表单
          		this.id='';
          		this.name='';
          		}
          		this.id='';
          		this.name='';
          	},
         toEdit: function(id){
          // 禁止修改ID
          this.flag=true;
          console.log(id)
          // 根据ID查询出要编辑的数据
          var book = this.books.filter(function(item){
            return item.id == id;
          });
          console.log(book)
          // 把获取到的信息填充到表单
          this.id = book[0].id;
          this.name = book[0].name;
          },
           deleteBook:function(id){
           	//删除
           	//根据id从数组中查找元素的索引
           	// var index=this.books.findIndex(function(item){
           	// 	return item.id==id
           	// });
           	// //根据索引删除数组元素
           	// this.books.splice(index,1);
           	// 方法二通过filter删除
           	this.books=this.books.filter(function(item){
           		return item.id!=id
           	})
           }
          }
		  });
	</script>
</body>
</html>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值