我正在使用 Vue.js 2.0,我正在尝试从“子组件”发出事件

Posted

技术标签:

【中文标题】我正在使用 Vue.js 2.0,我正在尝试从“子组件”发出事件【英文标题】:I am using Vue.js 2.0 and I am trying to emit an event from `child component` 【发布时间】:2018-08-29 11:35:35 【问题描述】:

我正在使用 Vue.js 2.0,我试图从 child componentparent component 发出一个事件,但它不起作用。

你可以在下面看到我的代码:

子组件:

<template>
  <button @click="confirmSendMessage">Send</button>
</template>

<script>
  export default 
    methods: 
      confirmSendMessage () 
        this.$emit('confirmed')
      
    
</script>

父组件:

<template>
    <ConfirmMessage/>
</template>

<script>
    import ConfirmMessage from './ConfirmMessage'
    export default 
        events: 
           confirmed() 
              console.log('confirmed')
           
        ,
        components: 
            ConfirmMessage
        
   
</script>

当我单击该按钮时,Chrome 控制台上没有显示任何内容。 我不知道为什么。有谁能够帮我?我是 Vue JS 的新手。

【问题讨论】:

【参考方案1】:

您错过了监听发出的事件。使用v-on监听事件:

<!--                               vv -> call method -->
<ConfirmMessage v-on:confirmed="confirmed" />
<!--                  ^^ -> emitted event -->

【讨论】:

现在我在控制台上得到了这个:Property or method "confirmed" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.:S【参考方案2】:

您必须侦听事件,如果您查看Emit Documentation,它需要将事件名称作为字符串的第一个参数,然后是您想要传递给侦听器的值(如果有)。

原来如此:

<confirm-message :nameOfEvent="functionToExecuteWhenTheEventIsEmitted" />

方法是:

functionToExecuteWhenTeEventIsEmitted(someValue)  //do whatever with someValue

关于孩子:

this.$emit('nameOfEvent', someValue)

你的情况

你没有传递值,所以 this.$emit('confirmed')&lt;ConfirmMessage :confirmed="confirmed"&gt; 就足够了

【讨论】:

不需要传递值。 这是一个完整的例子,你可以避免它,然后使用事件的名称 从 Vue 2 开始,您应该使用 kebab-case 作为事件名称,否则它将不起作用,如 docs 中所述

以上是关于我正在使用 Vue.js 2.0,我正在尝试从“子组件”发出事件的主要内容,如果未能解决你的问题,请参考以下文章

如何获得 Vue.js 2.0 类型的 TypeScript 与 Visual Studio 一起使用?

如何在 Vue.js 中将数据从父组件发送到子组件

将一串数据从父组件传递给子组件。 Vue.js 2

如何仅在父组件完全挂载时挂载 vue js 子组件-我正在使用 $refs

预渲染 vue.js 2.0 组件(类似于 vue 1 中的 this.$compile)

vue.js 2.0 通信最佳实践