打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
vue中$emit与$on和BUS

vue中emit与emit与on和BUS

bus:

 

//vue原型链挂载总线
Vue.prototype.bus = new Vue();

//子组件发送数据
this.bus.$emit("change",data);

//子组件接收数据
this.bus.$on("change",function(data){
})

emiton:

 

  var Event = new Vue();      相当于又new了一个vue实例,Event中含有vue的全部方法;

  Event.$emit('msg',this.msg);      发送数据,第一个参数是发送数据的名称,接收时还用这个名字接收,第二个参数是这个数据现在的位置;

  Event.$on('msg',function(msg){  接收数据,第一个参数是数据的名字,与发送时的名字对应,第二个参数是一个方法,要对数据的操作

    /这里是对数据的操作

  })

例:

 1 <!DOCTYPE html> 2 <html> 3     <head> 4         <meta charset="utf-8" /> 5         <title>孙三峰--博客园</title> 6         <script type="text/javascript" src="js/vue2.0.3.js" ></script> 7         <script type="text/javascript"> 8             //准备一个空的实例对象 9             var Event = new Vue();10             var A={11                 template:`12                     <div style="border: 1px solid red; margin-bottom: 10px; width: 300px;">13                         <h4>A组件</h4>14                         <p>{{a}}</p>15                         <input type="button" value="把A数据给C" @click="send" />16                     </div>17                 `,18                 data(){19                     return {20                         a:'我是A里面的数据'21                     }22                 },23                 methods:{24                     send(){        //A发送数据25                         Event.$emit('a-msg',this.a);26                     }27                 }28             };29             var B={30                 template:`31                     <div style="border: 1px solid green; margin-bottom: 10px; width: 300px;">32                         <h4>B组件</h4>33                         <p>{{b}}</p>34                         <input type="button" value="把B数据给C" @click="send" />35                     </div>36                 `,37                 data(){38                     return {39                         b:'我是B里面的数据'40                     }41                 },42                 methods:{43                     send(){44                         Event.$emit('b-msg',this.b);45                     }46                 }47             };48             var C={49                 template:`50                     <div style="border: 1px dotted green; margin-bottom: 10px;width: 300px;">51                         <h4>我是C组件,我在坐等接收数据</h4>52                         <p>{{a}}</p>53                         <p>{{b}}</p>54                     </div>55                 `,56                 data(){57                     return{58                         a:'',59                         b:''60                     }61                 },62                 mounted(){        //两种接收的方式63                     var _this = this;64                     Event.$on('a-msg',function(a){65                         _this.a=a;66                     });67                     Event.$on('b-msg',function(b){68                         this.b = b;69                     }.bind(this))70                 }71             };72             window.onload=function(){73                 new Vue({74                     el:'#box',75                     data:{76                         77                     },78                     components:{79                         'com-a':A,80                         'com-b':B,81                         'com-c':C82                     }83                 })84             }85         </script>86     </head>87     <body>88         <div id="box">89             <com-a></com-a>90             <com-b></com-b>91             <com-c></com-c>92         </div>93     </body>94 </html>
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
vue.js $emit/$on的用法和理解
转载:前端通信那些事儿
Vue组件入门篇 —— 表单组件
聊聊 VueJs 组件化编程
Vue 父子组件之间的通信
实时弹幕系统的设计与实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服