【IMWeb训练营作业】第一次Vue作业-todo list

第一次学习vue,跟原来的jQuery思路很不一样,要时刻记着:“数据驱动、数据驱动、数据驱动”,随着视频磕磕绊绊写完了第一次作业,还要多加练习,不然又把学的东西还给老师了。。。委屈




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>任务计划列表</title>
    <link rel="stylesheet" href="index.css">
    <script src="./vue.js"></script>
</head>
<body>
    <div class="page-top">
        <div class="page-content">
            <h2>任务计划列表</h2>
        </div>
    </div>
    <div class="main">
        <h3 class="big-title">添加任务:</h3>
        <input placeholder="例如:吃饭睡觉打豆豆;    提示:+回车即可添加任务" class="task-input" type="text" v-model="todo" v-on:keyup.enter="add" />
        <ul class="task-count" v-show="lists.length">
            <li>{{ noCheckedLength }}个任务未完成</li>
            <li class="action">
                <a class="active" href="###">所有任务</a>
                <a href="###">未完成的任务</a>
                <a href="###">完成的任务</a>
            </li>
        </ul>
        <h3 class="big-title">任务列表:</h3>
        <div class="tasks">

            <span class="no-task-tip" v-show="!lists.length">还没有添加任何任务</span>
            <ul class="todo-list">
                <li class="todo" v-bind:class="{completed: item.isChecked, editing: item === editTodos}" v-for="item in lists">
                    <div class="view">
                        <input type="checkbox" class="toggle" v-model="item.isChecked">
                        <label v-on:dblclick="edit(item)">{{ item.title }}</label>
                        <button class="destroy" v-on:click="del(item)"></button>
                    </div>
                    <input type="text" class="edit" v-model="item.title" v-focus="editTodos === item" v-on:keyup.enter="editCompleted(item)" v-on:keyup.esc="editCancel(item)" v-on:blur="editCompleted(item)" />
                </li>
            </ul>
        </div>
    </div>
    <script src="./app.js"></script>
</body>
</html>


//定义数据
var list = [
	{
		title: '降龙十八掌',
		isChecked: false
	},{
		title: '陈氏太极拳',
		isChecked: true
	}
];

new Vue({
	el: '.main',
	data: {
		lists: list,
		todo: "",
		editTodos: "",  //记录正在编辑的数据
		beforeTitle: ""
	},
	methods: {
		//添加任务
		add: function(e){
			this.lists.push({
				title: this.todo,
				isChecked: false
			});
			this.todo = ''
		},
		//删除任务
		del: function(todo){
			var index = this.lists.indexOf(todo);
			console.log(index);
			this.lists.splice(index, 1);
		},
		//编辑任务
		edit: function(todo){
			this.beforeTitle = todo.title;
			this.editTodos = todo;
		},
		//完成任务
		editCompleted: function(todo){
			this.editTodos = '';
		},
		//取消任务
		editCancel: function(todo){
			todo.title = this.beforeTitle;
			this.beforeTitle = '';
			this.editTodos = '';
		}
	},
	directives: {
		"focus" : {
			update: function(el, binding){
				el.focus();
			}
		}
	},
	computed: {
		noCheckedLength: function(){
			return this.lists.filter(function(index) {
				return !index.isChecked;
			}).length;
		}
	}
});



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值