06 Vue todolist 待办事项 已经完成 和进行中

为list数据添加状态,双向绑定、以及键盘回车事件

template:

<template>
	<div id="app">
		<input type="text" v-model="todo" @keydown="addData($event)" />
		<br>
		<hr>
		<h2>进行中</h2>
		<ul>
			<li v-for="(item,key) in list" v-if="!item.checked">
				<input type="checkbox" v-model="item.checked" />
				======{{item.title}}=======
				<button @click="removeData(key)">删除</button>
			</li>
		</ul>
		<h2>已完成</h2>
		<ul>
			<li v-for="(item,key) in list" v-if="item.checked">
				<input type="checkbox" v-model="item.checked" />
				======{{item.title}}=======
				<button @click="removeData(key)">删除</button>
			</li>
		</ul>
	</div>
</template>

js

<script>
export default {
  name: 'app',
  data () {
    return {
        todo: '',
		list: [
			{
				title: '录制node.js',
				checked: true
			},
			{
				title: '录制vue视频',
				checked: false
			}
		]
    }
  },
	methods:{
		addData(e) {
			console.log(e.keyCode);
			if(e.keyCode == 13) {
				//1.获取文本框输入的值   2.把文本框的值push到list里面
				this.list.push({
					title: this.todo,
					checked: false
				});
				//3.将文本框的值置为空
				this.todo = "";
			}
		},
		removeData(key) {
			// alert(key);
			//splice    js中操作数据的方法
			this.list.splice(key,1);
		}
	}
}
</script>

运行效果图:
在这里插入图片描述
进行回车添加list列表,选中复选框进心状态栏切换
在这里插入图片描述

完善代码,css样式美化,完整代码

template:

<template>
	<div id="app">
		<div class="header">
			<font>ToDoList</font>
			<input type="text" placeholder=" 添加ToDo" v-model="todo" @keydown="addData($event)" />
		</div>
		<div class="content">
			<h2>进行中</h2>
			<ul>
				<li v-for="(item,key) in list" v-if="!item.checked">
					<div class="list-box">
						<input class="checkbox" type="checkbox" v-model="item.checked" />
						<span class="title">{{item.title}}</span>
						<span class="delete"><img src="/src/image/delete.png" alt="" @click="removeData(key)"></span>
					</div>
				</li>

			</ul>
			<h2>已完成</h2>
			<ul>
				<li v-for="(item,key) in list" v-if="item.checked">
					<div class="list-box">
						<input class="checkbox" type="checkbox" v-model="item.checked" />
						<span class="title">{{item.title}}</span>
						<span class="delete"><img src="/src/image/delete.png" alt="" @click="removeData(key)"></span>
					</div>
				</li>
			</ul>
		</div>
	</div>
</template>

js:

<script>
	export default {
		name: 'app',
		data() {
			return {
				todo: '',
				list: [{
						title: '录制node.js',
						checked: true
					},
					{
						title: '录制vue视频',
						checked: false
					}
				]
			}
		},
		methods: {
			addData(e) {
				console.log(e.keyCode);
				if (e.keyCode == 13) {
					//1.获取文本框输入的值   2.把文本框的值push到list里面
					this.list.push({
						title: this.todo,
						checked: false
					});
					//3.将文本框的值置为空
					this.todo = "";
				}


			},
			removeData(key) {
				// alert(key);
				//splice    js中操作数据的方法
				this.list.splice(key, 1);
			}
		}
	}
</script>

css:

<style lang="scss">
	#app {
		width: 100%;
		height: 1024px;
		background: #CCCCCC;
		text-align: center;
		margin: 0 auto;
	}

	.header {
		width: 100%;
		background: #333;
		padding-top: 10px;
		padding-bottom: 10px;
	}

	.header font {
		font-size: 6mm;
		color: white;
		vertical-align: middle;
		line-height: 20px;
	}

	.header input {
		width: 400px;
		height: 20px;
		vertical-align: middle;
		border: 2px solid #CCCCCC;
		border-radius: 5px;
		margin-left: 160px;
	}

	.content {
		width: 100%;
		margin-left: -18px;
	}

	.content h2 {
		font-family: '黑体';
		margin-right: 560px;
	}

	.content ul {
		list-style: none;
	}

	.content ul li {
		margin-top: 8px;
		margin-bottom: 8px;
	}

	.list-box {
		width: 670px;
		height: 30px;
		border-radius: 5px 0 0 5px;
		border-left: 5px solid seagreen;
		margin: 0 auto;
		background: white;
		margin-bottom: 8px;
	}

	.list-box img {
		width: 30px;
		height: 30px;
		line-height: 30px;
	}

	.list-box .title {
		float: left;
		line-height: 30px;
		margin-left: 10px;

	}

	.list-box .delete {
		float: right;
		margin-right: 10px;
	}

	.checkbox {
		width: 20px;
		height: 25px;
		float: left;
		margin-left: 10px;
	}
</style>

运行效果:
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值