制作一个Todolist,文本框中添加任务内容,点击“添加”按钮可添加新任务到任务列表中,实现可勾选已完成任务的功能,当勾选完成的任务之后,文字会加中划线且文字变成浅灰色#ccc,并添加删除线,实现顶部数量信息展示及点击中括号中的“完成”可以将已完成的任务删除的功能
时间: 2024-03-09 08:46:45 浏览: 195
todolist:Webapp Todolist,您可以添加要执行的任务,抓取已完成的任务或删除任务
好的,下面是一个使用 Vue 制作 Todolist 的示例代码,实现了上述功能:
```html
<!DOCTYPE html>
<html>
<head>
<title>Todolist</title>
<meta charset="utf-8">
<style>
.completed {
text-decoration: line-through;
color: #ccc;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
<div id="app">
<h1>Todolist</h1>
<div>
<input type="text" v-model="newItem" placeholder="请输入任务内容">
<button @click="addNewItem">添加</button>
</div>
<ul>
<li v-for="(item, index) in items" :key="index">
<label>
<input type="checkbox" v-model="item.completed">
<span :class="{ completed: item.completed }">{{ item.content }}</span>
</label>
<button @click="deleteItem(index)" v-show="item.completed">删除</button>
</li>
</ul>
<p>共 {{ unfinishedCount }} 个任务未完成,<a href="#" @click="deleteCompleted">[完成]</a></p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
newItem: '',
items: []
},
computed: {
unfinishedCount: function() {
return this.items.filter(function(item) {
return !item.completed;
}).length;
}
},
methods: {
addNewItem: function() {
if (this.newItem.trim() !== '') {
this.items.push({
content: this.newItem,
completed: false
});
this.newItem = '';
}
},
deleteItem: function(index) {
this.items.splice(index, 1);
},
deleteCompleted: function() {
this.items = this.items.filter(function(item) {
return !item.completed;
});
}
}
});
</script>
</body>
</html>
```
在这个示例中,我们首先定义了一个包含两个属性的 Vue 实例,分别是 `newItem` 和 `items`。`newItem` 表示用户输入的待办事项,`items` 表示所有已添加的待办事项列表。
然后,我们使用 `v-model` 指令将用户输入的内容绑定到 `newItem` 属性上,并在点击“添加”按钮时调用 `addNewItem` 方法向 `items` 列表中添加新的待办事项。
在待办事项列表中,我们使用 `v-for` 指令循环渲染 `items` 列表,并使用 `v-model` 指令绑定每个待办事项的完成状态到 `completed` 属性上。同时,我们使用 `:class` 绑定样式类,当待办事项被勾选完成时,添加 `completed` 样式类,使其显示为中划线和浅灰色。我们还在每个已完成的待办事项后面添加了一个删除按钮,通过 `@click` 绑定 `deleteItem` 方法来实现删除功能。
在页面底部,我们通过 `computed` 属性计算未完成的任务数量,并在页面中展示出来。同时,我们在页面中添加了一个“完成”链接,通过 `@click` 绑定 `deleteCompleted` 方法来实现删除已完成的任务。
总体来说,这个示例中实现了 Todolist 的基本功能,包括添加、删除、勾选完成、展示未完成任务数量和删除已完成任务等功能。
阅读全文