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="js/vue.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>
改版:熊大在input输入数据传递给熊二
- <!doctype html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title></title>
- <script src="js/vue.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>
vue组件兄弟间通信的更多相关文章
- vue组件间通信六种方式(完整版)
本文总结了vue组件间通信的几种方式,如props. $emit/ $on.vuex. $parent / $children. $attrs/ $listeners和provide/inject,以 ...
- Vue组件间通信6种方式
摘要: 总有一款合适的通信方式. 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 组件是 vue.js 最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的 ...
- VUE组件如何通信
Vue父子组件如何通信? 子组件通知父组件(调用父组件方法) 在父组件使用 on(eventName)监听事件,在子组件使用emit(eventName) 触发事件 : 父组件通知子组件(调用子组件方 ...
- 前端面试 vue 部分 (5)——VUE组件之间通信的方式有哪些
VUE组件之间通信的方式有哪些(SSS) 常见使用场景可以分为三类: 父子通信: null 父向子传递数据是通过 props ,子向父是通过 $emit / $on $emit / $bus Vuex ...
- Vue 组件之间通信 All in One
Vue 组件之间通信 All in One 组件间通信 1. 父子组件之间通信 https://stackblitz.com/edit/vue-parent-child-commutation?fil ...
- vue组件之间通信传值
原文链接:https://blog.csdn.net/lander_xiong/article/details/79018737 我认为这位博主的这篇文章写的非常详细,通俗易懂, 我们这次的vue项目 ...
- vue组件间通信
组件间通信(父子,兄弟) 相关链接\组件通信http://www.cnblogs.com/xulei1992/p/6121974.html 学习链接Vue.js--60分钟快速入门http://www ...
- vue组件之间通信的8种方式
对于vue来说,组件之间的消息传递是非常重要的,下面是我对组件之间消息传递的常用方式的总结. props和$emit(常用) $attrs和$listeners 中央事件总线(非父子组件间通信) v- ...
- vue组件间通信子与父
二.组件间通信(子组件传值给父组件) 通过事件的方式来完成数据的传输. ①在父组件中 定义一个方法,用来接收子组件所通过事件传来的值 methods:{ recvMsg:function(msg){ ...
随机推荐
- VSCode配置 Debugger for Chrome插件
Debugger for Chrome这个插件是直接在vscode里面进行调试js文件,跟谷歌的控制台是一样的功能,下载了它就不用打开浏览器的控制台就能进行打断点. 首先在左侧扩展栏找到这个插件下载好 ...
- MySQL存储过程、触发器、自定义函数、事务
1.存储过程 MySQL中存储过程的参数中有IN.OUT.INOUT类型,但是函数的参数只能是IN类型的. “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参 ...
- PAT Basic 1024 科学计数法 (20 分) Advanced 1073 Scientific Notation (20 分)
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指 ...
- 合肥学院ACM集训队第一届暑假友谊赛 B FYZ的求婚之旅 D 计算机科学家 F 智慧码 题解
比赛网址:https://ac.nowcoder.com/acm/contest/994#question B FYZ的求婚之旅 思路: 然后用快速幂即可. 细节见代码: #include <i ...
- 关于sword框架浏览器上方小图标的修改
sword框架默认有一个document.ejs文件,可以导出html模板(找了很久没找到index.html,哈哈哈),里面有一行代码 这个href就是代表着浏览器上方图标的路径. 在public文 ...
- 51nod1820 长城之旅
题目描述 BB 痛失一血(打了场Comet OJ回来就没了) 不过后来又刷了一道水题 题解 LCM+取模=结论题 结论1 \(gcd(k^{2^i}+1,k^{2^j}+1)=1 (i\neq j 且 ...
- oracle java for ubuntu apt-get
oracle java PPA: ppa:webupd8team/javathe key word use for search more infomation: webupd8team
- Spring read-only="true" 只读事务的一些概念
概念:从这一点设置的时间点开始(时间点a)到这个事务结束的过程中,其他事务所提交的数据,该事务将看不见!(查询中不会出现别人在时间点a之后提交的数据) 应用场合: 如果你一次执行单条查询语句,则没有必 ...
- Java——GUI
[AWT] <1>AWT(Abstract Widow Toolkit)包含了很多类和接口,用于Java Application的GUI(Graphics User Interfac ...
- 题解 P2674 【《瞿葩的数字游戏》T2-多边形数】
题目说了很清楚,此题找规律,那么就找规律. 我们观察数列. 令k表示数列的第k个数. 三角形数:1 3 6 10 15 两项相减:1 2 3 4 5 再次相减:1 1 1 1 1 四边形数:1 4 9 ...