Javascript 如何使用App.vue中的方法定位另一个组件中的按钮?
我正在制作一个基本待办应用程序,其中有一个输入字段,输入任务并按“回车”键后,任务就会出现在列表中。与任务一起,Javascript 如何使用App.vue中的方法定位另一个组件中的按钮?,javascript,vue.js,Javascript,Vue.js,我正在制作一个基本待办应用程序,其中有一个输入字段,输入任务并按“回车”键后,任务就会出现在列表中。与任务一起,TodoCard.vue组件还生成一个按钮,我想用它来删除任务 我已经在按钮中添加了一个@click=“removeTodo”方法,但不知道该将其放置在TodoCard组件或App.vue文件的何处 TodoCard组件: <template> <div id="todo"> <h3>{{ todo.text }}</h3>
TodoCard.vue
组件还生成一个按钮,我想用它来删除任务
我已经在按钮中添加了一个@click=“removeTodo”
方法,但不知道该将其放置在TodoCard
组件或App.vue
文件的何处
TodoCard
组件:
<template>
<div id="todo">
<h3>{{ todo.text }}</h3>
<button @click="removeTodo(todo)">Delete</button>
</div>
</template>
<script>
export default {
props: ['todo'],
methods: {
removeTodo: function (todo) {
this.todos.splice(this.todos.indexOf(todo), 1)
}
}
}
</script>
删除任务的代码是否正确?您可以向家长发送一个事件,通知家长在子组件中单击了“删除”按钮 您可以在Vue中查看更多信息 下面是组件的外观:
TodoCard.vue
:
<template>
<div id="todo">
<h3>{{ todo.text }}</h3>
<button @click="removeTodo">Delete</button>
</div>
</template>
<script>
export default {
props: ['todo'],
methods: {
removeTodo: function (todo) {
this.$emit('remove')
}
}
}
</script>
您可以向父级发送事件,通知父级已单击子组件中的“删除”按钮 您可以在Vue中查看更多信息 下面是组件的外观:
TodoCard.vue
:
<template>
<div id="todo">
<h3>{{ todo.text }}</h3>
<button @click="removeTodo">Delete</button>
</div>
</template>
<script>
export default {
props: ['todo'],
methods: {
removeTodo: function (todo) {
this.$emit('remove')
}
}
}
</script>
允许父级将
@单击
处理程序传递给TodoCard
。然后在父对象中,拼接todos
。允许父对象将@单击处理程序传递到TodoCard
。然后在父级中,splicetodos
。我从ESlint得到一个未定义的错误,说中没有定义key
。todos.splice(key,1)
?我从ESlint得到一个未定义的错误,说中没有定义key
。todos.splice(key,1)
?
<template>
<div id="app">
<input class="new-todo"
placeholder="Enter a task and press enter."
v-model="newTodo"
@keyup.enter="addTodo">
<TodoCard v-for="(todo, key) in todos" :todo="todo" :key="key" @remove="removeTodo(key)" />
</div>
</template>
<script>
import TodoCard from './components/TodoCard'
export default {
data () {
return {
todos: [],
newTodo: ''
}
},
components: {
TodoCard
},
methods: {
addTodo: function () {
// Store the input value in a variable
let inputValue = this.newTodo && this.newTodo.trim()
// Check to see if inputed value was entered
if (!inputValue) {
return
}
// Add the new task to the todos array
this.todos.push(
{
text: inputValue,
done: false
}
)
// Set input field to empty
this.newTodo = ''
}
},
removeTodo: function(key) {
this.todos.splice(key, 1);
}
}
</script>