前端学习之Vue - todoList(学习之后练个手)

这是我完成的样子

简单画了个样式,感觉还行

先上代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
		<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
	</head>
	<body>
		<div id="root" style="margin: 0;">
			<h3>ToDoList</h3>
			<h3 class="holder">请输入事项</h3> <input v-model="inputValue"> <button @click="click1">提交</button>
			<ul style="list-style:none;margin: 0;">
				<p align="left">未完成任务:</p>
				<li v-for="(item1,index) in item1s">
					<button @click="todo(item1)">完成事项</button>
					<label class="tab1" style="width: 400px;">{{item1.text}}</label>
					<button @click="delete1(item1)">删除</button>
				</li>
				<hr />
				<p>已完成任务:</p>
				<li v-for="(item2,index) of item2s">
					<button @click="done(item2)" />恢复进行</button>
					<label style="width: 200px;">{{item2.text}}</label>
					<button @click="delete2(item2)">删除</button>
				</li>
			</ul>
			<hr />
		</div>

		<script>
			//创建vue实例
			new Vue({
				el: "#root",
				data: {
					item1s: [],
					inputValue: '',
					item2s: [],

				},
				methods: {
					//添加任务
					click1: function() {
						this.item1s.push({
							text: this.inputValue
						});
						this.inputValue = "";
					},

					//未完成任务变成已完成任务
					todo: function(item1) {
						//已完成任务列表增加 item1可以通过console看到结构
						this.item2s.push({
							text: item1.text
						});
						//从未完成任务列表移除
						this.item1s.splice(this.item1s.indexOf(item1), 1)
					},

					//已完成任务变成未完成任务
					done: function(item2) {
						//未完成任务列表增加 item2可以通过console看到结构
						this.item1s.push({
							text: item2.text
						});
						//从已完成任务列表移除
						this.item2s.splice(this.item2s.indexOf(item2), 1)
					},

					//删除未完成的任务
					delete1: function(item1) {
						this.item1s.splice(this.item1s.indexOf(item1), 1)
					},

					//删除已完成的任务
					delete2: function(item2) {
						this.item2s.splice(this.item2s.indexOf(item2), 1)
						console.log(this.item2s.indexOf(item2));
					}
				}
			})
		</script>
		<style>
			ul,
			input {
				margin: 0;
				padding: 0;

				/* font-size: 100%; */
				font-weight: normal;
				vertical-align: baseline;
			}
			label{
				width: 18.75rem;
			}
		</style>

	</body>
</html>

知识点详解

<li v-for="(item1,index) in item1s">

v-for:遍历对象

–键是–{{key}}–值是–{{val}}

this.item1s.push({text: this.inputValue});

push:push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
1.一定是在数组的末尾添加
2.该方法会改变原数组的长度
3.如果需要在数组起始位置添加元素请使用 unshift() 方法

this.item1s.splice(this.item1s.indexOf(item1), 1)

splice:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
用法:
arrayObject.splice(index,howmany,item1,…,itemX)
splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

猜你喜欢

转载自blog.csdn.net/weixin_39225682/article/details/106939368