vue组件兄弟传值

一、步骤

1.单独的事件中心管理组件的通信

var e =new Vue()

2.监听事件
一般放在生命周期函数里面
mounted:function(){
}

e.$on('事件名称',(接收传递的参数)=>{
	//执行传递参数的事件
})

3.触发事件
在事件里面执行

e.$emit('事件名称',参数)

4.销毁事件

e.$off('事件名称')

二、案例

此案例点击让各自兄弟变化
1.定义组件;

 Vue.component('teb',
            {
            data:function(){
               return{ 
                   mes:0
                }
            },
            template:`
            <div>
            <div>{{mes}}</div>
            <button @click='btn1'>点击我兄弟加2</button>
            </div>
            `,
Vue.component('teb1',
            {
            data:function(){
               return{ 
                   mes:0
                }
            },
            template:`
            <div>
            <div>{{mes}}</div>
            <button @click='btn2'>点击我兄弟加1</button>
            </div>
            `,
    
            )

2.显示组件

  <div id="app">
        <teb></teb>
        <teb1></teb1>
    </div>

3.创建实例

var e =new Vue()

4.监听事件
分别在各自组件下创建监听事件

 mounted:function(){
                e.$on('add-two',(val)=>{
                    this.mes+=val
                })
            },

在周期函数里面监听事件,接收参数并且处理;
5.触发事件
分别在各自函数下执行触发事件

 methods:{
                btn2:function(){
                    e.$emit('add-two',1)
                }
            }

以下是所有代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="app">
        <teb></teb>
        <teb1></teb1>
    </div>
    <script>
        var e=new Vue();
       Vue.component('teb',
            {
            data:function(){
               return{ 
                   mes:0
                }
            },
            template:`
            <div>
            <div>{{mes}}</div>
            <button @click='btn1'>点击我兄弟加2</button>
            </div>
            `,
            mounted:function(){
                e.$on('add-two',(val)=>{
                    this.mes+=val
                })
            },
            methods:{
                btn1:function(){
                    e.$emit('add-one',2)
                }
            }
        }),
            Vue.component('teb1',
            {
            data:function(){
               return{ 
                   mes:0
                }
            },
            template:`
            <div>
            <div>{{mes}}</div>
            <button @click='btn2'>点击我兄弟加1</button>
            </div>
            `,
            mounted:function(){
                e.$on('add-one',(val)=>{
                    this.mes+=val
                })
            },
            methods:{
                btn2:function(){
                    e.$emit('add-two',1)
                }
            }
        }
    
            )
        var vm=new Vue({
            el:'#app',   
        })
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值