您的位置:首页 > Web前端 > Vue.js

Vue父子传递实例讲解

2020-03-11 17:50 363 查看

实现功能:

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>

以上就是相关的实例代码,希望脚本之家整理的内容能够帮助到大家。

您可能感兴趣的文章:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Vue 父子传递