首页 > 语言 > JavaScript > 正文

Vue父子传递实例讲解

2024-05-06 15:44:30
字体:
来源:转载
供稿:网友

实现功能:

1、子组件的input输入,改变父组件信息

2、父组件对子组件1,3进行监听与控制

3、子组件1与子组件3相互关联

父子双向通信流程:

子组件的input通过事件监听->控制子组件的data中变量/向父组件$emit子事件及变量

父组件监听到$emit事件及变量,赋予父组件的变量,通过props传到子组件

<body><div id = "app"> <!-- //将父组件num1的数据传给props中的pnumber1,实现父传子 //监听子组件num1change事件,这里recdnum1函数,没明白加括号出错 --><cnp  :pnumber1 = "num1" :pnumber3 = "num3" @num1change = "recdnum1" @num3change="recdnum3" ></cnp></div> <!-- //template 编写自己的模版 --><template id = "mytemp"> <div>  <h3>props:{{pnumber1}}</h3>  <h3>child-data:{{dnumber1}}</h3>  <h3></h3>  <input type="text" :value="dnumber1" @input="num1input">  <h3>props:{{pnumber3}}</h3>  <h3>child-data:{{dnumber3}}</h3>  <input type="text" :value="dnumber3" @input="num3input">   </div></template><script>var app = new Vue({ el:"#app", data(){  return{   //父组件数据库中的默认数值   num1:11,   num3:31,  } }, methods:{  //监听事件中,将子组件传来的dnumber1传给num1,num1传给pnumber1  recdnum1(value){   //默认传递来的value为String,根据需要转为Int或Float   this.num1 = parseInt(value);   },  recdnum3(value){   this.num3=parseFloat(value);   }    }, components: {  cnp:{   template:"#mytemp",   props: {    pnumber1:{     //默认props的数据格式和默认值     type:Number,     default:1    },    pnumber3:{     type:Number,     default:3    }           },   data(){    return{     //将props的数值赋予data中变量     dnumber1:this.pnumber1,     dnumber3:this.pnumber3    }   },   methods: {    num1input(event){     //将input中的数值传给dnumber1     this.dnumber1 = event.target.value;     //向父组件发射事件num1change,并传出dnumber1数据     this.$emit("num1change",this.dnumber1);     //绑定pnumber3数值的关联性     this.dnumber3=this.dnumber1*5;     //向父组件发射pnumber3信息     this.$emit("num3change",this.dnumber3);    },    num3input(event){     this.dnumber3 = event.target.value;     this.$emit("num3change",this.dnumber3)    },   }  } }});</script></body>

以上就是相关的实例代码,希望错新站长站整理的内容能够帮助到大家。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选