欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue组件父子间通信详解(三)

程序员文章站 2022-07-06 21:09:56
本文实例为大家分享了vue组件父子间通信的具体代码,供大家参考,具体内容如下 三、组件间通信($parent $refs) 父组件要想获取子组件的数据: ①在调用...

本文实例为大家分享了vue组件父子间通信的具体代码,供大家参考,具体内容如下

三、组件间通信($parent $refs)

父组件要想获取子组件的数据:

①在调用子组件的时候,指定ref属性

<child-component ref="myson"></child-component>

②根据指定的引用的名字 找到子组件的实例对象

this.$refs.myson

子组件要想获取父组件的数据:

①直接读取
this.$parent
通过this.$refs拿到子组件的数据

代码:

<!doctype html>
<html>
 <head>
 <meta charset="utf-8">
 <title>组件间通信-01</title>
  <script src="js/vue.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
    <dahua></dahua>
  </div>
  <script>
  //vue提供的ref
    vue.component("dahua",{
      data:function(){
        return{
          mysonname:""
        }
      },
      methods:{
      //通过$refs拿到指定的所引用的对应的组件的实例对象
        getsonname:function(){
          this.mysonname = this.$refs.myson.name;
        }
      },
      template:`
        <div>
          <h1>这是父组件</h1>
          <button @click = "getsonname">获取子组件数据</button>
          <span>{{mysonname}}</span>
          <hr>
          <xiaohua ref="myson"></xiaohua>
        </div>
      `
    })
//  创建子组件
    vue.component("xiaohua",{
      data:function(){
        return{
          name:"小花"
        }
      },
      template:`
          <h1>这是子组件</h1>
      `
    })
    new vue({
      el:"#container",
      data:{
        msg:"hello vuejs"
      }
    })
  </script>
 </body>
</html>

子组件通过$parent获取父组件的数据

<!doctype html>
<html>
 <head>
 <meta charset="utf-8">
 <title>组件间通信-02</title>
  <script src="js/vue.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
    <dahua></dahua>
  </div>
  <script>
    //创建子组件
    vue.component("dahua",{
      data:function(){
        return{
          myname:"大花"
        }
      },
      template:`
        <div>
          <h1>这是父组件</h1>
          <hr>
          <xiaohua></xiaohua>
        </div>
      `
    })
    //创建子组件
    vue.component("xiaohua",{
      data:function(){
        return{
          msg:""
        }
      },
      template:`
        <div>
            <h1>这是子组件</h1>
            <p>{{msg}}</p>
        </div>
      `,
      created:function(){
        //在子组件创建完成时获取父组件的数据
        //保存在msg中在p标签中显示
          this.msg = this.$parent.myname;
      }
    })
    new vue({
      el:"#container",
      data:{
        msg:"hello vuejs"
      }
    })
  </script>
 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。