Вы используете слишком много массивов, когда вам нужен только 1 массив - массив с элементами ToDo.
<template>
<div id="app">
<label>
First Name:
<input type="text" name="firstName" v-model="firstName">
</label>
<label>
Last Name:
<input type="text" name="lastName" v-model="lastName">
</label>
<label>
Email:
<input type="email" name="email" v-model="email">
</label>
<button class="btn" @click="add">Send</button>
<Todo
v-for="(item,idx) in todoItems"
:key="idx"
:id="item.id"
:first-name="item.firstName"
:last-name="item.lastName"
:email="item.email"
@btnClick="detach(idx)"
/>
</div>
</template>
<script>
import Todo from "./components/todo";
export default
{
name: "App",
components:
{
Todo
},
data()
{
return {
id: 0,
firstName: '',
lastName: '',
email: '',
todoItems: [],
};
},
methods: {
add() {
this.todoItems.push({
firstName: this.firstName,
lastName: this.lastName,
email: this.email,
id: ++this.id,
});
this.firstName = '';
this.lastName = '';
this.email = '';
},
/** the delete function **/
detach(index)
{
this.todoItems.splice(index, 1);
}
}
};
</script>