vue.js - VueJS 2 $emit 和 $on

标签 vue.js vuejs2

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

我有 2 个组件:DashboadDashboardPanel

DashboardPanel中,我有一个方法:

execute () {
    // emit to parent
    this.$emit('executeSQL', this.value)
    ...
}

仪表板中:

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

没有任何反应,我没有在文档中找到在哪里使用 $on 并且我不知道我是否可以使用其他方式来实现它?

最佳答案

您必须在 Dashboard 组件中指定如何对来自 DashboardPanel 组件的 executeSQL 事件作出 react 。在 Dashboard 的 HTML 模板中:

<DashboardPanel v-on:executeSQL="doExecuteSQL($event)" />

doExecuteSQLDashboard 的一个方法:

methods: {
  doExecuteSQL(value) { ... }
}

希望这会有所帮助。

关于vue.js - VueJS 2 $emit 和 $on,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46541045/

相关文章:

events - 在子组件中监听父组件的事件并在无集线器的vue中执行子组件的方法

javascript - 以下元素的 Vue 2 切换类

vuejs2 - 在vuejs中选择一个选项时如何获得optgroup标签?

javascript - vue 属性 "$v"中的 vuelidate 在渲染期间被访问但未在实例上定义

vue.js - 组件已注册但未使用 vue/no-unused-components

javascript - 如何在 Vue JS 中动态分配键盘事件

javascript - 设置循环内选定的选项 Vue.js

javascript - 如何在 vue.js 中添加项目到列表

javascript - v-if 当对象更新时不更新子组件

vue.js - 使用 v-for 单击时反转 bool 值?