Vue.js中兄弟组件之间互相传值实例

兄弟组件之间互相传值,需要建立一个“中转站”(新的vue实例),并且需要主动触发。

实例上的$on方法来接受监听。

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>组件传值</title>

<script src="vue.js"></script>

</head>

<body>

<div id="box">

<child1></child1>

<child2></child2>

</div>

<template id="c1">

<h1>~~~~~~我是哥哥~~~~{{msg}} <button @click='fn'>点击</button></h1>

</template>

<template id="c2">

<h3>~~~~~~我是弟弟~~~~{{msg2}}</h3>

</template>

</body>

</html>

<script>

var Hub=new Vue(); // 1) 中转站,其中不需要设置任何参数

var vm=new Vue({

el: '#box',

components:{

child1:{

template:'#c1',

data:function(){

return {

msg: 'hello'

}

},

methods:{

fn:function(){

// 2) 主动触发监听(中转站触发监听)

console.log(this.msg); //hello

Hub.$emit('change',this.msg) //$emit触发监听方法

}

}

},

child2:{

template:'#c2',

data:function(){

return {

msg2: 'world'

}

},

// 创建完成 new Vue create mount

// 钩子函数

created(){

// 3) 接收监听 $on('事件名称',function(val){}) val是传递过来的值

Hub.$on('change',function(val){

console.log(val) //hello

// this.msg2 = val;

})

}

}

}

})

</script>

以上是 Vue.js中兄弟组件之间互相传值实例 的全部内容, 来源链接: utcz.com/z/349845.html

回到顶部