Vue杂记(二)——todolist待办事项列表

293 阅读1分钟

使用vue去制作一个todolist待办事项列表

里面的vue.js和bootstrap.js都是我从网上直接引过来的包

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<!-- 导入vue包,在浏览器内存中,就多了一个vue构造函数 -->
		<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js" type="text/javascript" charset="utf-8"></script>
		<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
		<title></title>
	</head>
	<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" value="" class="form-control" v-model="id"/>
			        </label>-->
			        <label>
			        	Name:
			        	<input type="text" value="" class="form-control" v-model="name" @keyup.enter="add"/>
			        </label>
			        <label>
			        	Content:
			        	<input type="text" value="" class="form-control" v-model="content" @keyup.enter="add"/>
			        </label>
			        <label>
			        	<!--添加数据按钮-->
			        	<input type="button" value="添加" class="btn btn-primary" @click="add"/>
			        </label>
			        <label>
			        	搜索名称关键字:
			        	<input type="text" value="" class="form-control" v-model="keywords"/>
			        	
			        </label>
			    </div>
			</div>
			<!--table的class去使用bootstrap设置样式-->
			<table class="table table-hover table-bordered table-striped">
				<thead>
					<tr>
						<th>ID</th>
						<th>Name</th>
						<th>Content</th>
						<th>Createtime</th>
						<th>Operation</th>
					</tr>
				</thead>
				<tbody>
					<tr v-for="item in search(keywords)" :key='item.id'>
						<td > {{ item.id }} </td>
						<td > {{ item.name }} </td>
						<td > {{ item.content }} </td>
						<!--dateFormat过滤日期-->
						<td > {{ item.ctime | dateFormat}} </td>
						<td > <a href="#" @click.prevent="del(item.id)">删除</a> </td>
					</tr>
				</tbody>
			</table>
		</div>
		
		<script type="text/javascript">
			var vm = new Vue({
				el: '#app',  
				data: {
					id:'',
					name:'',
					content:'',
					//搜索时的关键词keywords
					keywords:'',
					list:[
						{id: 1,name: '任务1' ,content:'JavaScript',ctime: new Date() },
						{id: 2,name: '任务2' ,content:'HTML',ctime: new Date() },
					]
				},
				methods:{
					add(){  //添加数据
						if(this.name == "" || this.content == ""){
							alert("任务名或内容为空")
						}else{
							var car = {id: this.list.length+1,name: this.name,content:this.content,ctime: new Date()}
							this.list.push(car)
							//添加完数据后清空添加行
							this.id = ''
							this.name = ''
							this.content = ''
						}
						
					},
					del(id){  //根据id删除数据
						this.list.some( (item,i) =>{
							if(item.id == id){
								this.list.splice(i,1)
								//如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
								return true
							}
						})
						
//						console.log(this.list.length)
						//如果删除某条数据,数组的id重新排列
						this.list.forEach(function(item,index){
//							console.log(item);
							item.id = index + 1;
						})
					},
					search(keywords){ //根据关键字进行数据搜索
						var newList = []
						//搜索方法
						this.list.filter(item=>{
							//keywords为空时,显示全部列表
							if(item.name.includes(keywords) == true){
								newList.push(item)
							}
						})
						return newList
					}
				},
				filters: {  //定义一个私有过滤器  有两个条件:过滤器名称和处理函数
					dateFormat:function(dateStr,pattern = ''){
						var dt = new Date(dateStr)
						
						var y = dt.getFullYear()
						var m = dt.getMonth() + 1
						var d = dt.getDate()
						var h = dt.getHours()
						var mm = dt.getMinutes()
						var ss = dt.getSeconds()
						
						return `${y}-${m}-${d} ${h}:${mm}:${ss}`
					}
				}
			})
		</script>
		<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js"></script>
	</body>
</html>

效果:

在前面输入任务名和任务内容,点击添加会在列表后面新增任务 

搜索关键字会根据Name属性去进行搜索,无关键字时默认会显示全部任务

点击删除会重新将任务id进行排列

 

 

 

一起学习,一起进步 -.- ,如有错误,可以发评论