kha*_*hah 7 vue-router vue-component vuex vuejs2 vue-props
我试图将 editTodo 作为 props 函数从父 app.vue 传递到子组件... TodoItem.vue 组件有一个项目列表,时间返回到 newTodo 和 dateTime 字段的主要用户输入。实际上,我是 Vue js 的新学习者,对组件通信的传递 props 有一点了解。
<template>
<div id="app" class="container">
<TodoInput :addTodo="addTodo"
:updateTodo="updateTodo"
/>
<todo-item v-for="(todo, index) in todos"
:key=todo.id
:todo=todo
:index =index
:removeTodo="removeTodo"
:editTodo="editTodo" />
</div>
</template>
<script>
import TodoInput from "./components/TodoInput.vue";
import TodoItem from "./components/TodoItem.vue";
export default {
name: "App",
components: {
TodoInput,
TodoItem,
},
data() {
return {
editing:false,
editItems:{},
todos: [
// {
// id: 1,
// title: "",
// date: new Date(),
// editing: false,
// completed: false,
// },
// {
// id: 1,
// title: "",
// date: new Date(),
// editing: false,
// completed: false,
// },
],
};
},
methods: {
editTodo(index, newTodo, dateTime){
, ' dateTime ', dateTime)
// this.editItems = {
// id,
// title,
// time,
// }
this.todo = newTodo
this.todo = dateTime
this.selectedIndex = index
this.editing = true
},
Run Code Online (Sandbox Code Playgroud)
TodoItem.vue 组件有一个项目列表和时间返回到 newTodo 和 dateTime 字段的主用户输入。***enter code here
``**
--> {{todo.title}} {{todo.time}}</div>
<div class="remove-item" @click="removeTodo(index)">
×
</div>
<div class="edit-item" @click="eiditTodo(index)"
>
<i class="fas fa-edit" id="edit"></i>
</div>
Run Code Online (Sandbox Code Playgroud)
导出默认值 { name: 'todo-item', props:{ todo:{ type: Object, required: true, }, removeTodo:{ type:Function, required:true, }, index:{ type:Number, required: true , },
},
data(){
return{
'id': this.todo.id,
'title': this.todo.newTodo,
'time': this.todo.dateTime,
}
methods:
getEdit(){
this.$emit('editTodo', this.selectedIndex)
}
Run Code Online (Sandbox Code Playgroud)
**`
小智 12
您应该从子组件发出一个事件并在父组件中执行该函数,而不是将函数作为 prop 传递给子组件来运行它。
从子组件发出事件
@click="$emit('edit-todo')"
Run Code Online (Sandbox Code Playgroud)
然后在父组件中
<div @edit-todo="editTodo">
</div>
Run Code Online (Sandbox Code Playgroud)
editTodo或者,您可以在组件中定义函数TodoItem并直接调用它。
| 归档时间: |
|
| 查看次数: |
27737 次 |
| 最近记录: |