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 相关文章推荐
原生js 秒表实现代码
Jul 24 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
Jan 27 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
Node.js返回JSONP详解
May 18 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
Feb 23 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
浅谈Vue.js中的v-on(事件处理)
Sep 05 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
JavaScript多种页面刷新方法小结
Apr 04 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 jQuery
解决vuex改变了state的值,但是页面没有更新的问题
Nov 12 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
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
Centos7.7 64位利用本地完整安装包安装lnmp/lamp套件教程
2021/03/09 Servers
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
JavaScript 事件系统
2010/07/22 Javascript
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
js获取select标签的值且兼容IE与firefox
2013/12/30 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
Node.js Sequelize如何实现数据库的读写分离
2016/10/23 Javascript
js异步编程小技巧详解
2017/08/14 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
python实现电子书翻页小程序
2019/07/23 Python
PyTorch预训练的实现
2019/09/18 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
python实现在线翻译功能
2020/03/03 Python
函授毕业生自我鉴定
2013/11/06 职场文书
力学专业毕业生自荐信
2013/11/17 职场文书
大学军训自我鉴定
2013/12/15 职场文书
ktv收银员岗位职责
2013/12/16 职场文书
超市活动计划书
2014/04/24 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
房屋认购协议书
2015/01/29 职场文书
教育教学读书笔记
2015/07/02 职场文书
2016年寒假见闻
2015/10/10 职场文书
MySQL 四种连接和多表查询详解
2021/07/16 MySQL