一,父级传向子级
1,在子级的属性中添加props:['myname',......],参数可以传多个,看具体而定;
2,在父级data中定义好需要传递的变量数据,例如name:"rose";
3,在父级template中的子级引用的标签内,利用v-bind:绑定需要传递的数据,例如<son v-bind:myname="name" .....></son>,此时的myname对应子级props所定义的myname,而name对应父级data里的name;
4,此时,在子级中引用{
{myname}}就可以得到父级所传递的数据:"rose"。例子如下:
1 235 434
二,子级向父级传递参数
1,在子组件方法体利用this.$emit('emitName',this.name)把数据发送到父组件;
2,在父组件方法体中定义方法,例如getName(value){},用于接收数据;
3,在父组件引用的子组件中写入@emitName="getName",例如<sonCom @emitName="getName"></conCom>,"@emitName"中的"emitName"对应子组件this.$emit()中的第一个参数'emitName';
4,父组件调用方法getName(value){ },value就等于子组件传过来的this.name;
例子如下:
1 // 创建父级组件 2 Vue.component('father', { 3 template: ` 459 `,10 // 这里的data要求是函数模式,并且返回一个全新的对象11 data() {12 return {13 answer: "?"14 }15 },16 methods: {17 getAns(res) {18 // console.log(res);19 this.answer = res;20 }21 },22 // 定义子级组件23 components: {24 son: {25 template: `26父级组件
6儿子,3 + 5 = {
{answer}} 78 2730 `,31 // props,组件之间传递参数的关键属性,通过父级的v-bind绑定属性传参32 methods: {33 answerQ() {34 this.$emit('tellAns', 8);35 }36 }37 }38 }39 })子级组件
28 29
三,兄弟级之间传递参数
1,创建事件总线let eventBus = new Vue();
2,在A方法体里调用eventBus.$emit("emitName",'jack');
3,在B方法体里接收,eventBus.$on("emiName",(value)=>{}),此时的value就等于A中传递过来的jack。
此方法通用,适合父级传子级,子级传父级,同级之间传递。
例子如下:
demo