利用vue的计算属性和监听实现todolist(包含本地存储)

 

如图 点击滑板选项 自动下滑到已完成 已完成后面的数字+1

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			li {
				list-style: none;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<input type="text" v-model='obj.title' @keyup.enter='addTask'>
			<h3>未完成{{unList.length}}</h3>
			<ul>
				<li v-for="(item,index) in unList">
					<input type="checkbox" v-model='item.done' :key='item.title'>
					<span>{{item.title}}</span>
					<button @click='delTask(item)'>X</button>
				</li>
			</ul>
			<h3>已完成{{doList.length}}</h3>
			<ul>
				<li v-for="(item,index) in doList">
					<input type="checkbox" v-model='item.done' :key='item.title'>
					<span>{{item.title}}</span>
					<button @click='delTask(item)'>X</button>
				</li>
			</ul>
		</div>
		<!-- 引入vue -->
		<script src="./js/vue.js"></script>
		<script>
			new Vue({
				el: "#app",
				data: {
					obj: {
						title: '',
						done: false
					},
					list: localStorage.task == undefined ? [] : JSON.parse(localStorage.task) //存放人物列表
				},
				methods: {
					addTask() {
						// this.list.unshift({title:this.obj.title,done:false});
						//将obj的属性全部拷贝到当前对象
						this.list.unshift({
							...this.obj
						});
						this.obj = {
							title: '',
							done: false
						};
						
					},
					delTask(obj) {
						//获取删除的下标
						let index = this.list.indexOf(obj);
						this.list.splice(index, 1);
						
					}
				},
				computed: {
					//过滤出合适的数据
					unList() {
						return this.list.filter(obj => {
							return !obj.done
						})
					},
					doList() {
						return this.list.filter(obj => {
							return obj.done
						})
					}
				},
				watch: {
					//实时监听list中的数据 有变化更新本地存储
					'list': {
						deep: true,
						handler() {
							localStorage.task = JSON.stringify(this.list);
						}
					}
				}
			})
		</script>
	</body>
</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值