//父组件 <son :msg="message" :user="userinfo"></son> data(){ return{ message:'hello', userinfo:{ name:'张三', age:20 } } }
//子组件 <template> <div> <h1>son组件</h1> <p>父组件传递过来的msg值:{{msg}}</p> <p>父组件传递过来的user值:{{user}}</p> </div> </template> //自定义属性 props:['msg','user']
子组件 data(){ return{ //子组件的数据,将来希望把count值传给父组件 count:0; } }, methods:{ add(){ this.count += 1 //修改数据时,通过$emit()触发自定义事件 //自定义事件名字,要传的值 this.$emit('numchange',this.count) } }
//父组件 <son @numchange="getNewCount"></son> data(){ return{ //定义counyFromSon数据项来接收子组件传递过来的数据 countFromSon:0 } }, methods:{ //获取子组件传递过来的数据 getNewCount(val){ this.countFromSon = val } }
//兄弟组件A--发送方 import bus from './eventBus.js' export default{ data(){ return{ msg:'hello vue' } }, methods:{ sentMsg(){ bus.$emit('share',this.msg) } } }
//eventBus.js import Vue from 'vue' //向外共享Vue的实例对象 export default new Vue()
//兄弟组件C--接收方 import bus from './evenBus.js' export default{ data(){ return{ //从A处接收到的值 msgFromA:'' } }, created(){ //为bus绑定事件 //share事件被触发,A里的msg会被传到C里的val bus.$on('share',val => { this.msgFromA = val }) } }
EventBus的使用步骤