兄弟组件之间通过Bus总线传值
Bus是一个空的Vue实例,兄弟组件之间通过一对this.bus.$emit('change',this.number)
和 this.bus.$on('change',function)
来传值和监听
$emit(‘触发事件’,要传递的值)
$on(‘触发事件’,操作)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>非父子组件传值(Bus/总线/发布订阅模式/观察者模式)</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<child content="dell"></child>
<child content="lee"></child>
</div>
<script>
//var bus=new Vue();
Vue.prototype.bus=new Vue() //创建的每一个vue实例都有bus属性
Vue.component('child',{
data:function () {
return{
number:this.content
}
},
props:{
content:String
},
template:'<div @click="handleclick">{{number}}</div>',
methods:{
handleclick:function () {
//bus.$emit('change',this.number)
this.bus.$emit('change',this.number) //触发当前实例上的事件。附加参数都会传给监听器回调。
}
},
beforeCreate:function () {
var this_=this
// bus.$on('change',function (msg) { //$on监听当前实例上的自定义事件
// this_.number=msg
// })
this.bus.$on('change',function (msg) { //$on监听当前实例上的自定义事件
this_.number=msg
})
}
})
var vm=new Vue({
el:"#app",
})
</script>
</body>
</html>