欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vuejs事件中心管理组件间的通信详解

程序员文章站 2022-11-25 09:29:38
本文为大家分享了vuejs事件中心管理组件间的通信,供大家参考,具体内容如下 事件中心 这个可以是一个空的全局的vue实例,其他的组件利用这个实例emit和on自定义事...

本文为大家分享了vuejs事件中心管理组件间的通信,供大家参考,具体内容如下

事件中心

这个可以是一个空的全局的vue实例,其他的组件利用这个实例emit和on自定义事件,这样组件定义了自己的事件处理方法。

import vue from 'vue'
window.eventhub = new vue();

事件监听和注销监听

事件监听应在更组件的created钩子函数中进行,在组件销毁前应注销事件监听

 //hook 
 created: function () {
 //listen event
 window.eventhub.$on('switchcomments',this.switchcomments);
 window.eventhub.$on('removeissue',this.removeissue);
 window.eventhub.$on('savecomment',this.savecomment);
 window.eventhub.$on('removecomment',this.removecomment);

 //get init data
 var that =this;
 axios.get('issue/index')
 .then(function (resp) {
  that.issue_list=resp.data;
 });
 },
 beforedestroy: function () {
 window.eventhub.$off('switchcomments');
 window.eventhub.$off('removeissue');
 window.eventhub.$off('savecomment');
 window.eventhub.$off('removecomment');
 }

子组件的emit事件,注意这里用的window.$emit而不是this.emit

 methods: {
 removecomment: function(index,cindex) {
  window.eventhub.$emit('removecomment', {index:index, cindex:cindex});
 },
 savecomment: function(index) {
  window.eventhub.$emit('savecomment', {index: index, comment: this.comment});
  this.comment="";
 }
 },

note: 这其实还不是最理想的通信方式,下一篇我们看看vuex怎么玩

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。