当父组件要给孙子,或者孙子与孙子要传值的时候怎么传,一层一层传太麻烦了,vuejs提供了一中模式叫发布订阅模式(观察者模式,bus,总线)来处理非父子组件间的传值
<div id='root'> <child content = 'Dell'></child> <child content = 'Lee'></child> </div> <script> Vue.prototype.bus = new Vue(); Vue.component('child',{ props:{ content:String }, data:function(){ return { selfContent:this.content } }, template:'<div @click="handleClick">{{this.selfContent}}</div>', methods:{ handleClick:function(){ this.bus.$emit('change',this.selfContent) } }, mounted:function(){////页面已经被渲染完毕了的时候被执行 var that = this; this.bus.$on('change',function(msg){ that.selfContent = msg; }) } }) var vm = new Vue({ el:'#root', methods:{ handleClick:function(){ alert(1); } } }) </script>