vue2 to do list

效果图
在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<input type="text" @keyup.enter="addItem">
			<!-- 遍历数据list -->
			<div class="un">
            	<h3>未完成{
   
   {undolist.length}}</h3>
            	<div v-for="item in undolist" :key="item.id">
                <input type="checkbox" v-model="item.done">
                <span>{
   
   {item.title}}</span>
                <button @click="delItem(item)">x</button>
            	</div>
        	</div>
        <div class="do">
            <h3>已经完成{
   
   {donelist.length}}</h3>
            <div v-for="item in donelist" :key="item.id">
                <input type="checkbox" v-model="item.done">
                <span>{
   
   {item.title}}</span>
                <button @click="delItem(item)">x</button>
            </div>
        </div>
		</div>
		<script>
			new Vue({
      
      
				el:"#app",
				computed:{
      
      
					// 通过计算list算出undolist没有完成的列表
					undolist(){
      
      
						// 通过list过滤 返回item.done值为false的所有元素
						return this.list.filter(item=>!item.done);
					},
					donelist(){
      
      
						// 返回保留item.done值为true的元素
						return this.list.filter(item=>item.done);
					}
				},
				methods:{
      
      
					// 删除元素
					delItem(item){
      
      
					if (confirm("确定要删除我么?")) {
      
      
						// 查找item在list的下标
						var ind = this.list.indexOf(item);
						// 进行删除
						this.list.splice(ind,1);
						}
					},
					// 添加元素
					addItem(e){
      
      
						// e.target输入的文本框
						// e.target.value 文本框的值
						this.list.push(
						{
      
      
						done:false,
						title:e.target.value,
						id: this.list.length === 0 ? 1 : this.list[this.list.length - 1].id + 1
						}
						)
						// 清空文本框的内容
						e.target.value = "";
					}
				},
				data(){
      
      
					return {
      
      
						 list:[
						// 	{done:true,title:"学习html"}
						 ]
					}
				}
			})
			// 目标:1 在文本框输入文字,按回车,文字添加到list里面
			// 目标:2 单击x 删除当前行
			// unshift在数组的前面添加一个元素
			// splice(n,m,j) 从第n个删除m个,添加j
			// indexOf(item) 查找item在列表的下标
		</script>
		 
	</body>
</html>

猜你喜欢

转载自blog.csdn.net/promise466/article/details/128986189