Vue.js VueJS 2$emit和$on

Vue.js VueJS 2$emit和$on,vue.js,vuejs2,Vue.js,Vuejs2,我使用VueJS 2,但我真的不知道如何从子组件到父组件进行通信 我有两个组件:仪表板和仪表板面板 在仪表板面板中,我有一种方法: execute () { // emit to parent this.$emit('executeSQL', this.value) ... } 和在仪表板中: mounted () { // get event from DashboardPanel this.$on('executeSQL', function(value

我使用VueJS 2,但我真的不知道如何从子组件到父组件进行通信

我有两个组件:仪表板仪表板面板

在仪表板面板中,我有一种方法:

execute () {
    // emit to parent
    this.$emit('executeSQL', this.value)
    ...
}
和在仪表板中:

mounted () {
   // get event from DashboardPanel
   this.$on('executeSQL', function(value) {
        alert(value)
   })
}

什么都没有发生,我在文档中找不到在哪里使用$on并且我不知道是否可以使用其他方法来实现它

您必须在
仪表板
组件中指定如何响应
仪表板面板
组件中的
执行SQL
事件。在
仪表板的HTML模板中

<DashboardPanel v-on:executeSQL="doExecuteSQL($event)" />
methods: {
  doExecuteSQL(value) { ... }
}

希望这会有所帮助。

您必须在
仪表板
组件中指定如何响应
仪表板面板
组件中的
执行SQL
事件。在
仪表板的HTML模板中

<DashboardPanel v-on:executeSQL="doExecuteSQL($event)" />
methods: {
  doExecuteSQL(value) { ... }
}

希望这会有所帮助。

假设DashboardPanel是子组件,您是否尝试过
此。$parent。$emit
?假设DashboardPanel是子组件,您是否尝试过
此。$parent。$emit
?是的,我使用了此方法,但是我不明白为什么$on事件在JS
$on
中不起作用,它是用来监听同一组件发出的事件的。所以
this.$on('executeSQL')
可以在仪表板组件中工作,但在仪表板组件中不工作是的,我使用了这种方法,但我不理解为什么$on事件在JS中不工作
$on
用于侦听同一组件发出的事件。因此,
this.$on('executeSQL')
将在仪表板面板组件中工作,但在仪表板组件中不工作