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开发包大全整理
Dec 22 Javascript
Jquery判断IE6等浏览器的代码
Apr 05 Javascript
js实现幻灯片效果(基于jquery插件)
Nov 05 Javascript
关闭页面时window.location事件未执行的原因分析及解决方案
Sep 01 Javascript
将数字转换成大写的人民币表达式的js函数
Sep 21 Javascript
javascript实现输出指定行数正方形图案的方法
Aug 03 Javascript
Javascript中的return作用及javascript return关键字用法详解
Nov 05 Javascript
JS工作中的小贴士之”闭包“与事件委托的”阻止冒泡“
Jun 16 Javascript
微信小程序实现图片预加载组件
Jan 18 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
May 22 Javascript
angularjs实现简单的购物车功能
Sep 21 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
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
php使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
php强制下载文件函数
2016/08/24 PHP
JQuery Study Notes 学习笔记(一)
2010/08/04 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
Pandas之排序函数sort_values()的实现
2019/07/09 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
医学专业毕业生推荐信
2013/11/14 职场文书
大学生村官演讲稿
2014/04/25 职场文书
企业年会祝酒词
2015/08/11 职场文书
常用的Python代码调试工具总结
2021/06/23 Python
Python编程根据字典列表相同键的值进行合并
2021/10/05 Python
python脚本框架webpy的url映射详解
2021/11/20 Python