vue实现的组件兄弟间通信功能示例


Posted in Javascript onDecember 04, 2018

本文实例讲述了vue实现的组件兄弟间通信功能。分享给大家供大家参考,具体如下:

兄弟组件间通信(event)

借助于一个公共的Vue的实例对象,不同的组件可以通过该对象完成事件的绑定和触发

var bus = new Vue();

bus.$emit()
bus.$on()

熊大想要发消息给熊二,

接收方(熊二):事件绑定

bus.$on('customEvent',function(msg){
//msg就是通过事件 传递来的数据
})

发送方(熊大):触发事件

bus.$emit('customEvent',123);

练习:

在熊二中 加上一个button,
点击按钮时告诉熊大:'快跑!'

接收方:事件绑定
发送方:触发事件

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
    <xiongda></xiongda>
    <hr>
    <xionger></xionger>
  </div>
  <script>
/*借助于一个公共的Vue的实例对象,不同的组件可以通过该对象完成事件的绑定和触发*/
//new一个对象,兄弟间的通信,将借助他事件绑定和触发来实现
  var bus = new Vue();
  //熊大发送消息给熊二
    //xiongda组件
    Vue.component("xiongda",{
      methods:{
        sendToXiongEr:function(){
        //给熊二发送消息
        //触发msgToXiongEr事件
          bus.$emit("msgToXiongEr","哈哈,光头强来了");
        }
      },
      template:`
        <div>
          <h1>我是熊大</h1>
          <button @click="sendToXiongEr">Click Me</button>
        </div>
      `
    })
//熊二组件
    Vue.component("xionger",{
      template:`
        <div>
          <h1>我是熊二</h1>
        </div>
      `,
      mounted:function(){
//      给该组件绑定一个自定义事件和对应的处理函数
        //调用bus中的on方法
        //事件的触发一般是接收数据然后处理
        var that = this;
          bus.$on("msgToXiongEr",function(msg){
            alert("自定义的事件触发,接收到的数据"+msg);
          })
      }
    })
    new Vue({
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试,可得到如下运行效果:

vue实现的组件兄弟间通信功能示例

改版:熊大在input输入数据传递给熊二

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title></title>
  <script src="https://cdn.bootcss.com/vue/2.0.1/vue.min.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
    <xiongda></xiongda>
    <hr>
    <xionger></xionger>
  </div>
  <script>
/*借助于一个公共的Vue的实例对象,不同的组件可以通过该对象完成事件的绑定和触发*/
//new一个对象,兄弟间的通信,将借助他事件绑定和触发来实现
  var bus = new Vue();
  //熊大发送消息给熊二
    //xiongda组件
    Vue.component("xiongda",{
      data:function(){
        return {
          xiongDaInput:""
        }
      },
      methods:{
        sendToXiongEr:function(){
        //给熊二发送消息
        //触发msgToXiongEr事件
          bus.$emit("msgToXiongEr",this.xiongDaInput);
          this.xiongDaInput = "";
        }
      },
      template:`
        <div>
          <h1>我是熊大</h1>
          <input type="text" v-model="xiongDaInput"/>
          <button @click="sendToXiongEr">Click Me</button>
        </div>
      `
    })
//熊二组件
    Vue.component("xionger",{
      data:function(){
        return{
          recvMsgIs:[]
        }
      },
      template:`
        <div>
          <h1>我是熊二</h1>
          <p v-for="tmp in recvMsgIs">{{tmp}}</p>
        </div>
      `,
      mounted:function(){
//      给该组件绑定一个自定义事件和对应的处理函数
        //调用bus中的on方法
        //事件的触发一般是接收数据然后处理
        var that = this;
          bus.$on("msgToXiongEr",function(msg){
            //alert("自定义的事件触发,接收到的数据"+msg);
              that.recvMsgIs.push(msg);
          })
      }
    })
    new Vue({
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>

感兴趣的朋友还可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码的运行效果。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
用JavaScript实现单继承和多继承的简单方法
Mar 29 Javascript
jquery ready()的几种实现方法小结
Jun 18 Javascript
也说JavaScript中String类的replace函数
Sep 22 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
Mar 19 Javascript
JavaScript必知必会(七)js对象继承
Jun 08 Javascript
JS获取当前页面名称的简单实例
Aug 19 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
canvas实现粒子时钟效果
Feb 06 Javascript
NW.js 简介与使用方法
Feb 01 Javascript
vue非父子组件通信问题及解决方法
Jun 11 Javascript
JavaScript引用类型RegExp基本用法详解
Aug 09 Javascript
Vue 技巧之控制父类的 slot
Feb 24 Javascript
微信小程序模板template简单用法示例
Dec 04 #Javascript
vue项目刷新当前页面的三种方法
Dec 04 #Javascript
微信小程序之swiper滑动面板用法示例
Dec 04 #Javascript
vue项目每30秒刷新1次接口的实现方法
Dec 04 #Javascript
详解webpack4之splitchunksPlugin代码包分拆
Dec 04 #Javascript
React Native中Mobx的使用方法详解
Dec 04 #Javascript
element ui table(表格)实现点击一行展开功能
Dec 04 #Javascript
You might like
关于crontab的使用详解
2013/06/24 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
js获取input标签的输入值实现代码
2013/08/05 Javascript
js关闭浏览器窗口及检查浏览器关闭事件
2013/09/03 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
2018/07/27 Javascript
[02:12]DOTA2英雄基础教程 变体精灵
2013/12/16 DOTA
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
python中查看变量内存地址的方法
2015/05/05 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
Python pickle模块实现对象序列化
2019/11/22 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
Django 再谈一谈json序列化
2020/03/16 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
淘宝活动总结范文
2014/06/26 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
办理房产证委托书
2014/09/18 职场文书
初三毕业评语
2014/12/26 职场文书
思想道德自我评价2015
2015/03/09 职场文书
2015年科室工作总结
2015/04/10 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
python非标准时间的转换
2021/07/25 Python
Java数据结构之堆(优先队列)
2022/05/20 Java/Android