Slide 22
Slide 22 text
section.container
.card
.card-header Δ͜ͱ
task-list(:tasks="unfinishedTasks" @check="onTaskCheck")
.card
.card-header ͬͨ͜ͱ
task-list(:tasks="finishedTasks" @check="onTaskCheck")
import TaskList from '~/components/TaskList.vue'
export default {
components: { TaskList },
data() {
return {
tasks: [
{ id: 1, title: 'ڇೕΛങ͏', finished: false },
{ id: 2, title: 'ͨ·͝Λങ͏', finished: false },
]
}
},
computed: {
finishedTasks() { return this.tasks.filter((task) => { return task.finished }) },
unfinishedTasks() { return this.tasks.filter((task) => { return !task.finished }) }
},
methods: {
onTaskCheck(taskId) {
const task = this.tasks.find(task => task.id === taskId)
this.$set(task, 'finished', !task.finished)
}
}
}
./pages/tasks/index.vue
ul.list-group.list-group-flush.px-3
li.list-group-item(
v-for="task in tasks"
:key="task.id")
input.form-check-input(
:id="`task-checkbox-${task.id}`"
:checked="task.finished"
@change="$emit('check', task.id)"
type="checkbox")
label(:for="`task-checkbox-${task.id}`")
|{{ task.title }}
export default {
props: {
tasks: {
type: Array,
required: true
}
}
}
./components/TaskList.vue
DIFDLΠϕϯτൃՐ
UBTLpOJTIFEస