如何在父组件中侦听事件$ emit而不在vuejs2中声明{eventName}

时间:2017-03-23 23:08:49

标签: javascript vuejs2

我想知道是否可以从子组件发出事件并在父节点中侦听而不使用方便的@event {eventMame}语法。我正在使用一个引入此问题的插件。

我正在使用vuetable2组件并将操作附加到行,我必须执行以下操作:

{
  name: '__component:custom-actions',
  title: 'Actions',
  titleClass: 'text-center',
  dataClass: 'text-center'
}

我无法/不知道如何使用@将事件监听器附加到自定义操作组件。

我在创建的方法中尝试了以下内容:

created = () => {
  this.$on('eventName', this.methodName');
}

但这似乎不起作用。

在我正在做的自定义操作组件中:

this.$emit('eventName');

1 个答案:

答案 0 :(得分:1)

不要使用胖箭头来定义创建的钩子。 this将指向window,而不是Vue,this.methodNamethis.$on都将是未定义的。使用

created(){
  this.$on('eventName', this.methodName');
}

created: function(){
  this.$on('eventName', this.methodName');
}

发表评论编辑

您可以使用总线通过多层组件进行通信。在您的组件之外,声明bus

const bus = new Vue();

在嵌套组件中

bus.$emit('eventName');

在您的父母

created(){
  bus.$on('eventName', this.methodName');
}