【发布时间】:2020-09-27 11:24:21
【问题描述】:
当上面的待办事项被删除时,为什么下面的待办事项会变成交叉?
例如:
项目1 项目2 第 3 项 第4项
交叉项目3:
项目1 项目2 项目 3 X 第 4 项
删除第 2 项:
项目1 第 3 项 项目4 X
我在 Vue 代码中做错了什么?我昨天刚开始学习 Vue,所以我的错误很可能是基本的。
<div id="app">
<todo-list>
</todo-list>
</div>
<style>
.crossed {
text-decoration : line-through;
}
.todo:hover {
cursor: pointer;
font-weight: bold;
}
</style>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
Vue.component('todo-list',{
data: function () {
return {
newText: '',
todos:[],
todoId: 0
}
},
template: `
<div>
<form v-on:submit.prevent="addTodo">
<input v-model="newText">
<button>ADD TODO</button>
</form>
<ul>
<todo class="todo" v-for="(todo,index) in todos" :text="todo.text" :key="todo.todoId" @remove="removeTodo(index)"></todo>
</ul>
</div>
`,
methods: {
addTodo: function() {
this.todos.push({
text: this.newText,
done: false,
id: this.todoId++
});
this.newText = '';
},
removeTodo: function(index) {
this.todos.splice(index,1);
}
}
});
Vue.component('todo',{
props: ['text'],
data: function () {
return {
done: false
}
},
template: `
<li>
<span v-on:click="done = !done" :class="{crossed: done}">
{{text}}
</span>
<button v-on:click="$emit('remove')">Remove</button>
</li>
`
})
new Vue({
el: '#app'
})
</script>
【问题讨论】:
标签: javascript vue.js