Vuejs2 在vue js中将函数作为道具传递
我正在尝试将Editodo作为道具函数从父app.vue传递给子组件。。。 TodoItem.vue组件有一个项目列表,时间返回到newTodo和dateTime字段的主用户输入。实际上,我是Vue js的新学员,对pass props b/w组件通信有一点了解Vuejs2 在vue js中将函数作为道具传递,vuejs2,vue-component,vuex,vue-router,vue-props,Vuejs2,Vue Component,Vuex,Vue Router,Vue Props,我正在尝试将Editodo作为道具函数从父app.vue传递给子组件。。。 TodoItem.vue组件有一个项目列表,时间返回到newTodo和dateTime字段的主用户输入。实际上,我是Vue js的新学员,对pass props b/w组件通信有一点了解 <template> <div id="app" class="container"> <TodoInput :addTodo="a
<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
},
导出默认值{
名称:“待办事项”,
道具:{
待办事项:{
类型:对象,
要求:正确,
},
removeTodo:{
类型:功能,
要求:正确,
},
索引:{
类型:数字,
要求:正确,
},
**`您应该从子组件发出事件并在父组件中执行函数,而不是将函数作为道具传递给子组件以运行它 从子组件发出事件的步骤
@click="$emit('edit-todo')"
<div @edit-todo="editTodo">
</div>
然后在父组件中
@click="$emit('edit-todo')"
<div @edit-todo="editTodo">
</div>
或者,您可以在
TodoItem
组件中定义editTodo
函数并直接调用它。您不应该为了运行而将函数作为道具传递给子组件,而应该从子组件发出事件并在父组件中执行该函数
从子组件发出事件的步骤
@click="$emit('edit-todo')"
<div @edit-todo="editTodo">
</div>
然后在父组件中
@click="$emit('edit-todo')"
<div @edit-todo="editTodo">
</div>
或者,您可以在
TodoItem
组件中定义editTodo
函数并直接调用它。这是否回答了您的问题?这是否回答了您的问题?