Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)


Posted in Javascript onSeptember 14, 2017

我们接着上文继续,本文我们讲解兄弟组件的通信,项目结构还是跟上文一样.

在src/assets目录下建立文件EventHandler.js,该文件的作用在于给同级组件之间传递事件

EventHandler.js代码:

import Vue from 'Vue';
export default new Vue();

1,在Components目录下新建一个组件Brother1.vue

<template>
 <div>
  <h3>Z国: ghostwu</h3>
  <input v-on:click="send" type="button" value="发送">
  <p>{{msg}}</p>
 </div>
</template>
<script>
 import EventHandler from '../assets/EventHandler.js';
 export default {
  data(){
   return {
    msg : ''
   }
  },
  methods : {
   send(){
    EventHandler.$emit( 'myDefineEv', "ghostwu向岛国发射了一颗原子弹" );
   }
  },
  mounted (){
   let _this = this;
   EventHandler.$on( "RDefineEv", function( data ){
    _this.msg = data;
   } );
  }
 }
</script>

。通过EventHandler.$emit发送一个自定义事件myDefineEv

。通过mouted【相当于jquery的ready, 原生js的onload】,这个是vue生命周期的钩子函数, 用于在页面加载完成之后执行代码,在这里就是接收RDefineEv事件( Brother2.vue定义的 )

2,在Components目录下新建一个组件Brother2.vue

<template>
 <div>
  <h3>R国:八嘎</h3>
  {{msg}}
  <input v-on:click="defend" type="button" value="防御">
 </div>
</template>
<script>
 import EventHandler from '../assets/EventHandler.js';
 export default {
  data(){
   return {
    msg : ''
   }
  },
  methods : {
   defend(){
     EventHandler.$emit( 'RDefineEv', "岛国采用了高科技反原子弹系统" );
   }
  },
  mounted(){
   let _this = this;
   EventHandler.$on( "myDefineEv", function( data ){
    _this.msg = data;
   } );
  }
 }
</script>

。点击按钮发送RDefineEv事件

。文档ready的时候,接收myDefineEv(Brother1.vue)出发的自定义事件

三、在App.vue中调用两个同级组件

<template>
 <div id="app">
 <Brother1></Brother1>
 <Brother2></Brother2>
 </div>
</template>

<script>
 import Brother1 from './components/Brother1.vue';
 import Brother2 from './components/Brother2.vue';

 export default {
 components : {
  Brother1,
  Brother2
 }
 }
</script>

小结:

创建一个事件传递中心,例如EventHandler.js,用它作为传递消息的中介

在需要传值的组件中用EventHandler.$emit触发一个自定义事件,并传递参数

在需要接收数据的组件中用EventHandler.$on监听自定义事件,并在回调函数中处理传递过来的参数

以上这篇Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 获取对象 基本选择与层级
May 31 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
文字垂直滚动之javascript代码
Jul 29 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
Aug 29 Javascript
js实现的简练高效拖拽功能示例
Dec 21 Javascript
详解angularjs 关于ui-router分层使用
Jun 12 Javascript
JS库之wow.js使用方法
Sep 14 Javascript
vue中mint-ui的使用方法
Apr 04 Javascript
小程序清理本地缓存的方法
Aug 17 Javascript
vue中的ref和$refs的使用
Nov 22 Javascript
vue-cli3项目展示本地Markdown文件的方法
Jun 07 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
May 15 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
Sep 14 #Javascript
对于js垃圾回收机制的理解
Sep 14 #Javascript
使用SVG基本操作API的实例讲解
Sep 14 #Javascript
JSON 数据格式详解
Sep 13 #Javascript
JS库 Highlightjs 添加代码行号的实现代码
Sep 13 #Javascript
详解动画插件wow.js的使用方法
Sep 13 #Javascript
JS库之Highlight.js的用法详解
Sep 13 #Javascript
You might like
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
PDO预处理语句PDOStatement对象使用总结
2014/11/20 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
用Js实现的动态增加表格示例自己写的
2013/10/21 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
jQuery实现只允许输入数字和小数点的方法
2016/03/02 Javascript
JavaScript获取当前时间向前推三个月的方法示例
2017/02/04 Javascript
玩转vue的slot内容分发
2018/09/22 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python进程通信之匿名管道实例讲解
2015/04/11 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
python文件读写代码实例
2019/10/21 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
详解Python3中的 input() 函数
2020/03/18 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
2014年英语工作总结
2014/12/20 职场文书
敬老院志愿者活动总结
2015/05/06 职场文书
感恩信:写给爸爸妈妈的一封感谢信
2019/09/12 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
Python中的协程(Coroutine)操作模块(greenlet、gevent)
2022/05/30 Python
如何利用python创作字符画
2022/06/25 Python