练习一
只需要根据 todo.completed 的状态来条件渲染标为完成的按钮即可,v-if 指令正好派上用场:
<input v-if="!todo.completed" type="button"
value="标为完成"
@click="markAsCompleted(todo)"/>
练习二
上述 v-if 语句将已完成的 todo 后的标为完成的按钮隐藏,对应的 else 语句就应该是显示一个标为未完成的按钮,这个按钮和 markAsCompleted 类似,它监听 click 事件并调用 markAsUncompleted 函数,将 todo 的 completed 状态置回 false,从而将已完成的 todo 重新标记为未完成:
<input v-if="!todo.completed" type="button"
value="标为完成"
@click="markAsCompleted(todo)"/>
<input v-else type="button"
value="标为未完成"
@click="markAsUncompleted(todo)"/>
methods: {
addTodo: function () {
this.todos.push(
// 修改后的 todo 模型
{id: id++, title: this.newTodoTitle, completed: false}
);
this.newTodoTitle = '';
},
markAsCompleted: function (todo) {
todo.completed = true
},
markAsUncompleted: function (todo) {
todo.completed = false
}
}
-- EOF --