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 相关文章推荐
jQuery DIV弹出效果实现代码
Jul 03 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
javascript实现日期时间动态显示示例代码
Sep 08 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
Oct 20 Javascript
javascript字符串替换函数如何一次性全部替换掉
Oct 30 Javascript
Vue键盘事件用法总结
Apr 18 Javascript
用js实现before和after伪类的样式修改的示例代码
Sep 07 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
webpack4之如何编写loader的方法步骤
Jun 06 Javascript
js设置默认时间跨度过程详解
Jul 17 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
Sep 16 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的开发框架的现状和展望
2007/03/16 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
2013/05/15 Javascript
让浏览器DOM元素最后加载的js方法
2014/07/29 Javascript
js实现基于正则表达式的轻量提示插件
2015/08/29 Javascript
JS 事件绑定、事件监听、事件委托详细介绍
2016/09/28 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python中操作符重载用法分析
2016/04/29 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
Python实现的多项式拟合功能示例【基于matplotlib】
2018/05/15 Python
详解Django中间件执行顺序
2018/07/16 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
应届大学生求职的自我评价
2013/11/17 职场文书
销售岗位职责范本
2014/06/12 职场文书
医学生求职信
2014/07/01 职场文书
2014广电局实施党的群众路线教育实践活动方案思想汇报
2014/09/22 职场文书
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL
win10搭建配置ftp服务器的方法
2022/08/05 Servers