学习前端_vue组件_父组件接收子组件中的数据

父组件不能直接获取子组件中的数据,只能通过子组件发送时间的方式传递数据

1:在子组件中定义发送方法 例如:this.$emit('ve',this.name,this.address,this.sex)     第一个参数是事件名称,后面的参数是要发送的数据

2:在掉用子组件的地方设置绑定      例如<my-vue2 @ve='getData'></my-vue2>   've'是步骤一中的第一个参数,‘getdate'是接收数据的方法

3:在父组件中定义接收数据的方法   例如:getData(children_name,children_address,children_sex)  参数和步骤1中的数据参数要一一对应。


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>父子组件</title>
  <script src="js/vue.js"></script>
</head>
<body>
  <div id="test">
    <my-vue1></my-vue1>
  </div>
  <template id="vue1">
    <div>
      <p>这是父组件</p>
      <p>姓名是:{{name}} 地址:{{address}} 性别:{{sex}}</p>
      <p>子组件的数据: {{children_name}}{{children_address}}{{children_sex}}</p>
      <my-vue2 @ve='getData'></my-vue2>    <!-- 步骤2:调用的父组件中调用的子组件中设置接收事件匹配 -->      
    </div>
  </template>
  <template id="vue2">
    <div>
      <p>这是子组件</p>
      <p>姓名是:{{name}} 地址:{{address}} 性别:{{sex}}</p>
      <input type="button" value="向父组件发送数据" @click='send()'>
    </div>
  </template>
  <script>
    new Vue({
      el:"#test",
      components:{
        'my-vue1':{
          methods: {
            getData(children_name,children_address,children_sex){        //步骤3:在子组件中定义接收方法
              this.children_name=children_name;
              this.children_address=children_address,
              this.children_sex=children_sex;
            }
          },
          template:'#vue1',
          data() {
            return {
              name:'张三',
              address:'上海',           
              sex:'男',
              children_name:'',
              children_address:'',
              children_sex:''
            }
          },  
          components:{         
            'my-vue2':{
              template:'#vue2',
              data() {
                return {
                  name:'李四',
                  address:'北京',
                  sex:'女'
                }
              },
              methods: {
                send(){
                  this.$emit('ve',this.name,this.address,this.sex)  //步骤1在子组件中定义发送方法
                }
              },
            }
          }

        }
      }
    })
  </script>
</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值