vue中过滤器的应用,增加删除及获取关键字

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<link rel="stylesheet" href="bootstrap-3.3.7.css">
		<title></title>
	</head>
	<script src="vue-2.4.0.js"></script>
	
	<body>
	
		<div id="app">
 <div class="panel panel-primary">
		    <div class="panel-heading">
		      <h3 class="panel-title">添加品牌</h3>
		    </div>
		    <div class="panel-body form-inline">
		      <label>
		        Id:
		        <input type="text" class="form-control" v-model="id">
		      </label>
		
		      <label>
		        Name:
		        <input type="text" class="form-control" id="search" v-model="name" @keyup.enter='add'>
		      </label>
		
		      <!-- 在Vue中,使用事件绑定机制,为元素指定处理函数的时候,如果加了小括号,就可以给函数传参了 -->
		      <input type="button" value="添加" class="btn btn-primary" @click="add" v-fontsize="'14px'">
		
		      <label>
		        搜索名称关键字:
		        <input type="text" class="form-control" v-model="keywords" id="search" v-focus v-color>
		      </label>
		    </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>
		      <!-- 之前, v-for 中的数据,都是直接从 data 上的list中直接渲染过来的 -->
		      <!-- 现在, 我们自定义了一个 search 方法,同时,把 所有的关键字,通过传参的形式,传递给了 search 方法 -->
		      <!-- 在 search 方法内部,通过 执行 for 循环, 把所有符合 搜索关键字的数据,保存到 一个新数组中,返回 -->
		       <tr v-for="item in search(keywords)" :key="item.id">
		        <td>{{item.id}}</td>
		      	<td>{{item.name}}</td>
		      	<td>{{item.ctime|dataFormat()}}</td>
<!-- 						.prevent阻止页面跳动 -->
						<td>  <a href="" @click.prevent="del(item.id)" >删除</a></td>
						 
		      </tr>
		    </tbody>
		  </table>
		
		
		
		</div>
	<script>
		Vue.directive('color',{
			bind:function(el){
				el.style.color='red'
				// el.style.color=binding.value
			}
		})
		Vue.directive('focus',{
			//每当指令绑定在元素上时,会立即执行bind函数  在每个函数,第一个参数永远是el,表示被绑定的那个元素,这个el参数,是一个原生js对象
			bind:function(el){},
			//inserted表示元素插入到dom中,会执行
			inserted:function(el){
				el.focus()
			},
			//当vnode更新时
			updated:function(el){}
		}
		)
		//自定义键盘码
		// Vue.config.keyCodes.f2=113;
			Vue.filter('dataFormat',function(dataStr,pattern=''){
			var dt=new Date(dataStr);
			var y =dt.getFullYear();
			//转为填充为0的 先转化为toString字符串,再用padStart(2,'0')
			var m=(dt.getMonth()+1).toString().padStart(2,'0');
			var d=dt.getDate().toString().padStart(2,'0');
			// return `${y}-${m}-${d}`
			if(pattern.toLowerCase()=='yyy-mmm-ddd'){
				return `${y}-${m}-${d}`
			}else{
				var hh=dt.getHours();
				var mm=dt.getMinutes();
				var ss=dt.getMinutes();
				return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
			}
		})
		
			  // 创建 Vue 实例,得到 ViewModel
			  var vm = new Vue({
			    el: '#app',
			    data: {
						id:'',
						name:'',
						keywords:'',
						list: [
						  { id: 1, name: '奔驰', ctime: new Date() },
						  { id: 2, name: '宝马', ctime: new Date() }
						]
				},
	    methods: {
	     add(){
				 this.list.push({id:this.id,name:this.name,ctime:new Date()})
			 },
			 del(id){
				 //分析  根据id找到索引删除 ,找到索引,调用splice方法  splice可增添删除和替换  some()返回为true,终止
				 //arr.some(fn(item,index,arr)),item为正在处理的元素, index为正在处理的元素当然索引值
// 				 this.list.some((item,i)=>{
// 					 if(item.id==id){
// 						 this.list.splice(i,1);
// 						 return true;
// 					 }
// 				 })
				var index=this.list.findIndex(item=>{
						if(item.id==id){
							return true;
						}
					})
					this.list.splice(index,1)
			 },
		   search(keywords){
				 var newList=[];
				this.list.forEach(item=>{
					 if(item.name.indexOf(keywords)!=-1){
						 newList.push(item)
					 }
				 })
				 return newList
			 }
	    },
			directives:{
				'fontsize':function(el,binding){el.style.fontSize=binding.value}
			}
	  })
		// document.getElementById('search').focus
		// Vue.filter('过滤器的名称',function(data){})
	</script>
		
	</body>
	
</html>

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值