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的一点点认识总结《javascript高级程序设计》读书笔记
Nov 30 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
Aug 29 Javascript
js隐藏与显示回到顶部按钮及window.onscroll事件应用
Jan 25 Javascript
Jquery选择器中使用变量实现动态选择例子
Jul 25 Javascript
jQuery实现带滑动条的菜单效果代码
Aug 26 Javascript
jQuery实现下拉框功能实例代码
May 06 Javascript
浅谈js中几种实用的跨域方法原理详解
Dec 02 Javascript
详解微信小程序Page中data数据操作和函数调用
Sep 27 Javascript
JavaScript模块详解
Dec 18 Javascript
vue-content-loader内容加载器的使用方法
Aug 05 Javascript
微信小程序swiper实现滑动放大缩小效果
Nov 15 Javascript
Vue 组件复用多次自定义参数操作
Jul 27 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读写文件的方法(生成HTML)
2006/11/27 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
JS实现悬浮移动窗口(悬浮广告)的特效
2013/03/12 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
浅析jquery某一元素重复绑定的问题
2014/01/03 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
JavaScript基于SVG的图片切换效果实例代码
2020/12/15 Javascript
Python入门篇之文件
2014/10/20 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
解决安装pycharm后不能执行python脚本的问题
2019/01/19 Python
100行Python代码实现每天不同时间段定时给女友发消息
2019/09/27 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
详解python tcp编程
2020/08/24 Python
英国HYPE双肩包官网:英国本土时尚潮牌
2018/09/26 全球购物
群众路线问题查摆对照检查材料
2014/10/04 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
幼儿园教师求职信
2015/03/20 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
导游词之新疆-喀纳斯
2019/10/10 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL