网络编程
位置:首页>> 网络编程>> JavaScript>> Vue父子传递实例讲解

Vue父子传递实例讲解

作者:laozhang  发布时间:2023-07-02 17:03:29 

标签:Vue,父子传递

实现功能:

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>

来源:https://www.cnblogs.com/xiaoguniang0204/p/12307210.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com