利用vue.js,设计一个方便在校学生使用的代办事项提醒应用程序(需要代码)。该程序的主要功能:1.使用HTML5表单完成界面设计。2.代办实现处理。对已经完成的代办事项打上√标记,同时通过x按钮删除该事项。3.状态显示栏设置。实现剩余项目数、全部按钮、待完成按钮、已完成按钮、清除完成按钮等功能。
时间: 2024-03-16 10:41:26 浏览: 65
好的,以下是利用Vue.js设计的一个简单的代办事项提醒应用程序的代码:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Vue.js Todo App</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css">
<style>
.completed {
text-decoration: line-through;
color: gray;
}
</style>
</head>
<body>
<div class="container mt-5" id="app">
<h3 class="mb-3">Vue.js Todo App</h3>
<form @submit.prevent="addTodo">
<div class="input-group mb-3">
<input type="text" class="form-control" placeholder="Add new todo" v-model="newTodo">
<button type="submit" class="btn btn-primary" :disabled="!newTodo">Add</button>
</div>
</form>
<div class="row">
<div class="col-12 col-md-6">
<div class="mb-3">
<button class="btn btn-secondary me-2" @click="filter = 'all'">All</button>
<button class="btn btn-secondary me-2" @click="filter = 'pending'">Pending</button>
<button class="btn btn-secondary me-2" @click="filter = 'completed'">Completed</button>
<button class="btn btn-danger me-2" @click="clearCompleted" v-show="completedTodos.length">Clear Completed</button>
</div>
<div class="list-group">
<a href="#" class="list-group-item list-group-item-action" v-for="(todo, index) in filteredTodos" :key="index" :class="{ completed: todo.completed }">
<input type="checkbox" class="form-check-input me-2" v-model="todo.completed" @change="updateStatus">
{{ todo.text }}
<button type="button" class="btn-close float-end" @click.prevent="remove(index)"></button>
</a>
</div>
</div>
<div class="col-12 col-md-6">
<div class="card">
<div class="card-body">
<h5 class="card-title">Todo Status</h5>
<p class="card-text">Total: {{ totalTodos }}</p>
<p class="card-text">Pending: {{ pendingTodos }}</p>
<p class="card-text">Completed: {{ completedTodos.length }}</p>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
todos: [
{ text: 'Learn Vue.js', completed: false },
{ text: 'Build a Todo app', completed: true },
{ text: 'Deploy it to Netlify', completed: false }
],
newTodo: '',
filter: 'all'
},
methods: {
addTodo() {
this.todos.push({
text: this.newTodo,
completed: false
});
this.newTodo = '';
},
remove(index) {
this.todos.splice(index, 1);
},
updateStatus() {
localStorage.setItem('todos', JSON.stringify(this.todos));
},
clearCompleted() {
this.todos = this.todos.filter(todo => !todo.completed);
}
},
computed: {
filteredTodos() {
if (this.filter === 'all') {
return this.todos;
} else if (this.filter === 'pending') {
return this.todos.filter(todo => !todo.completed);
} else {
return this.todos.filter(todo => todo.completed);
}
},
totalTodos() {
return this.todos.length;
},
pendingTodos() {
return this.todos.filter(todo => !todo.completed).length;
},
completedTodos() {
return this.todos.filter(todo => todo.completed);
}
},
mounted() {
if (localStorage.getItem('todos')) {
try {
this.todos = JSON.parse(localStorage.getItem('todos'));
} catch (e) {
localStorage.removeItem('todos');
}
}
}
});
</script>
</body>
</html>
```
代码中使用了Bootstrap 5和Vue.js的CDN。在HTML中,我们首先定义了一个表单,用于添加新的代办事项。表单中有一个输入框和一个添加按钮。输入框使用了v-model指令,将输入的内容与Vue实例中的newTodo属性绑定。
接下来,我们定义了一个div,用于显示代办事项列表。在这个div中,我们通过v-for指令遍历todos数组,将每个代办事项渲染成一个列表项。列表项中包含一个复选框、代办事项文本和一个删除按钮。复选框使用了v-model指令,将其选中状态与每个代办事项的completed属性绑定。
在每个列表项右侧,我们定义了一个删除按钮,用于删除该代办事项。删除按钮使用了@click.prevent指令,阻止默认事件,并调用remove方法从todos数组中删除该代办事项。
除此之外,还定义了一个状态显示栏。状态显示栏中包含了剩余项目数、全部按钮、待完成按钮、已完成按钮和清除完成按钮等功能。这些按钮都绑定了相应的点击事件,通过改变filter属性的值,来控制代办事项列表的显示。
最后,在Vue实例中,我们定义了todos数组、newTodo属性、filter属性和一些方法和计算属性。其中,addTodo方法用于添加新的代办事项,remove方法用于删除代办事项,updateStatus方法用于更新代办事项的状态,clearCompleted方法用于清除已完成的代办事项。
computed属性中,我们定义了filteredTodos、totalTodos、pendingTodos和completedTodos等计算属性,用于控制代办事项列表的显示和状态栏的更新。
在mounted钩子函数中,我们从localStorage中获取已经保存的代办事项列表,并将其赋值给todos数组。这样,当用户刷新页面时,之前添加的代办事项就不会丢失了。
以上就是利用Vue.js设计的一个简单的代办事项提醒应用程序的代码。
阅读全文