任务管理应用程序是管理任务、跟踪进度和组织工作流程的宝贵工具。本教程将指导您使用 Vue.js 构建一个交互式任务列表,让您轻松管理和跟踪您的任务。
此任务管理应用程序提供以下功能:
首先,创建一个 Vue 实例,并定义一个包含任务数据的响应式数组:
import { ref } from "vue";
const tasks = ref([
// 任务数据对象数组
]);
接下来,创建任务列表的 HTML 模板。此模板使用 Vue 的 v-for 指令来迭代任务数组并渲染每个任务:
<div v-for="task in tasks" :key="task.id" class="rounded-lg border border-gray-300 p-4">
<!-- 任务详情 -->
</div>
要添加新任务,添加一个表单,其中包含一个输入字段和一个提交按钮:
<div class="flex items-center space-x-4">
<button @click="addTask" class="rounded-lg border border-blue-500 bg-blue-500 px-4 py-2 text-white">
Add Task
</button>
</div>
在 Vue 实例中,定义一个 addTask
方法来处理表单提交并创建新任务:
methods: {
addTask() {
// 创建一个新任务对象
const newTask = {
id: Date.now(), // 使用时间戳作为唯一 ID
title: "", // 初始标题为空
status: "In Progress", // 默认状态为“进行中”
dueDate: null, // 初始到期日期为空
description: "", // 初始描述为空
};
// 将新任务添加到任务数组
tasks.value.push(newTask);
},
},
使用 Vue 的 v-model
指令将搜索输入字段与 Vue 实例中的数据绑定:
<input type="text" v-model="searchQuery" class="rounded-lg border border-gray-300 p-2 focus:outline-none focus:border-blue-500" placeholder="Search" />
在 Vue 实例中,定义一个 computed
属性来过滤任务列表并返回与搜索查询匹配的任务:
computed: {
filteredTasks() {
if (!this.searchQuery) {
return tasks.value;
}
return tasks.value.filter((task) => task.title.toLowerCase().includes(this.searchQuery.toLowerCase()));
},
},
使用 Vue 的 v-if
指令根据任务状态显示或隐藏任务:
<div v-if="task.status === 'Completed'" class="rounded-full bg-green-500 px-2 py-1 text-white text-xs">
{{ task.status }}
</div>
使用 Vue 的 v-if
指令根据到期日期显示或隐藏任务:
<div v-if="task.dueDate < today" class="rounded-full bg-red-500 px-2 py-1 text-white text-xs">
Overdue
</div>
开发这段代码的过程巩固了我对 Vue.js 的理解,让我对 Vue 的响应式系统、数据绑定和组件化方法有了更深入的认识。
未来,可以考虑扩展此任务管理应用程序的功能,包括: