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入门教程(7) History历史对象
Jan 31 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
javascript实现复制与粘贴操作实例
Oct 16 Javascript
Javascript控制input输入时间格式的方法
Jan 28 Javascript
JavaScript 拖拽实例代码
Sep 21 Javascript
AngularJS页面带参跳转及参数解析操作示例
Jun 28 Javascript
详解基于vue-cli优化的webpack配置
Nov 06 Javascript
vue使用websocket的方法实例分析
Jun 22 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
Sep 17 Javascript
d3.js实现图形拖拽
Dec 19 Javascript
基于JS实现快速读取TXT文件
Aug 25 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
Nov 05 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实现选择排序的解决方法
2013/05/04 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
php银联网页支付实现方法
2015/03/04 PHP
PHP网络操作函数汇总
2015/05/18 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP使用SMTP邮件服务器发送邮件示例
2018/08/28 PHP
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JSON取值前判断
2014/12/23 Javascript
理解JS绑定事件
2016/01/19 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
如何搜索查找并解决Django相关的问题
2014/06/30 Python
python中map()与zip()操作方法
2016/02/27 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
大学自我鉴定
2013/12/20 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
车辆转让协议书
2014/09/24 职场文书
党政领导班子四风问题对照检查材料思想汇报
2014/10/02 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
python本地文件服务器实例教程
2021/05/02 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python
利用Python多线程实现图片下载器
2022/03/25 Python
Vue深入理解插槽slot的使用
2022/08/05 Vue.js