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 相关文章推荐
JavaScript Event学习第二章 Event浏览器兼容性
Feb 07 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
Mar 10 Javascript
jquery实现预览提交的表单代码分享
May 21 Javascript
jQuery $.extend()用法总结
Jun 15 Javascript
AngularJS语法详解(续)
Jan 23 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
Dec 10 Javascript
node.js微信公众平台开发教程
Mar 04 Javascript
JSON字符串操作移除空串更改key/value的介绍
Jan 05 Javascript
简述pm2常用命令集合及配置文件说明
May 30 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
May 17 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 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
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
如何让CI框架支持service层
2014/10/29 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
2015/10/23 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
php常用字符函数实例小结
2016/12/29 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
js实现分割上传大文件
2016/03/09 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
详解vue中使用微信jssdk
2019/04/19 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
python框架Django实战商城项目之工程搭建过程图文详解
2020/03/09 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
地理教师岗位职责
2014/03/16 职场文书
计算机网络专业求职信
2014/06/05 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
行政助理岗位职责
2015/02/10 职场文书
七一表彰大会简报
2015/07/20 职场文书
数学复习课教学反思
2016/02/18 职场文书
MySQL大小写敏感的注意事项
2021/05/24 MySQL
Python实现智慧校园自动评教全新版
2021/06/18 Python
尝试使用Python爬取城市租房信息
2022/04/12 Python
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android