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 八进制转义字符(8进制)
Apr 08 Javascript
js获取html参数及向swf传递参数应用介绍
Feb 18 Javascript
JS定时器实例
Apr 17 Javascript
js实现class样式的修改、添加及删除的方法
Jan 20 Javascript
jQuery设置指定网页元素宽度和高度的方法
Mar 25 Javascript
jQuery过滤选择器用法示例
Sep 12 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
详解webpack分包及异步加载套路
Jun 29 Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 Javascript
vue使用v-for实现hover点击效果
Sep 29 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
微信小程序模板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伪静态写法附代码
2008/06/20 PHP
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
Jquery 获取指定标签的对象及属性的设置与移除
2014/05/29 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
2016/05/04 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
Input文本框随着输入内容多少自动延伸的实现
2017/02/15 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
python之matplotlib学习绘制动态更新图实例代码
2018/01/23 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
Python进行统计建模
2020/08/10 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
使用CSS3的appearance属性改变元素的外观的方法
2015/12/12 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
什么是聚集索引和非聚集索引
2012/01/17 面试题
局域网定义和特性
2016/01/23 面试题
Linux中如何用命令创建目录
2015/01/12 面试题
企业治理工作自我评价
2013/09/26 职场文书
直接有效的自我评价
2014/01/11 职场文书
摄影助理岗位职责
2014/02/07 职场文书
留学推荐信范文
2014/05/10 职场文书
小学清明节活动总结
2014/07/04 职场文书
社区服务活动小结
2014/07/08 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL