Vuejs2 在vue js中将函数作为道具传递

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

我正在尝试将Editodo作为道具函数从父app.vue传递给子组件。。。 TodoItem.vue组件有一个项目列表,时间返回到newTodo和dateTime字段的主用户输入。实际上,我是Vue js的新学员,对pass props b/w组件通信有一点了解

      <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
函数并直接调用它。

这是否回答了您的问题?这是否回答了您的问题?