zoukankan      html  css  js  c++  java
  • vue--父子组件的传值

    什么是父子组件?

    组件中引入组件,被引入的组件就是子组件。例如在 Hello.vue 组件中引入 Header.vue 组件,那么 Hello.vue 就是父组件,Header.vue就是子组件。

    一、父组件向子组件传值

    Hello.vue

    <template>
      <div id="Header">
      {{msg}}
      <!-- 调用自组件传递title 和 msg -->
      <v-header :title="title" :msg="msg"></v-header>
      </div>  
    </template>
    <script>
    import Header from './Header.vue';
    export default {
      name: 'Header',
      data () {
        return {
          msg: 'Hello模块',
          title:'我是Hello父组件里面的title'
        }
      },
      methods:{ 
      },
      components:{
        'v-header':Header
      }
    }
    </script> 

    子组件:header.vue 中使用 props 来进行接受参数:

    <template>
        <div id="Header">
            <p>我是一个头部组件----{{title}}-----{{msg}}</p> 
        </div>
    </template>
    <script>
    export default {
      name: 'HelloWorld',
      data () {
        return {}
      }, 
      props:['title','msg']
    }
    </script>

    二、父组件向子组件传递方法

    Hello.vue

    <template>
      <div id="Header">
      {{msg}}
      <!-- 调用自组件传递 run 方法(传递不带括号) -->
      <v-header :title="title" :msg="msg" :run='run'></v-header>
      </div>  
    </template>
    <script>
    import Header from './Header.vue';
    export default {
      name: 'Header',
      data () {
        return {
          msg: 'Hello模块',
          title:'我是Hello父组件里面的title'
        }
      },
      methods:{
        run(){
          alert('我是Hello组件里面的hello方法');
        }
      },
      components:{
        'v-header':Header
      }
    }
    </script> 

    Header.vue 同样还是用 props 来进行接受:

    <template>
        <div id="Header">
            <p>我是一个头部组件----{{title}}-----{{msg}}</p>
        <input type="button" value="调用父组件的方法" @click="run()">
        </div>
    </template>
    <script>
    export default {
      name: 'HelloWorld',
      data () {
        return {}
      }, 
      props:['title','msg','run'] // 接受run 方法
    }
    </script>

    三、父组件向子组件传递自己(this传递的就是自己)

    <template>
      <div id="Header">
      {{msg}}
      <!-- 调用自组件传递 run 方法(传递不带括号) 用 this 来传递自己 -->
      <v-header :title="title" :msg="msg" :run='run' :hello="this"></v-header>
      </div>  
    </template>
    <script>
    import Header from './Header.vue';
    export default {
      name: 'Header',
      data () {
        return {
          msg: 'Hello模块',
          title:'我是Hello父组件里面的title'
        }
      },
      methods:{
        run(){
          alert('我是Hello组件里面的run方法');
        }
      },
      components:{
        'v-header':Header
      }
    }
    </script>

    Header.vue组件的接受 hello

    <template>
        <div id="Header">
            <p>我是一个头部组件----{{title}}-----{{msg}}</p>
        <input type="button" value="调用父组件的方法" @click="run()">
        <input type="button" value="调用父组件的属性和方法" @click="getParent()">
        </div>
    </template>
    <script>
    export default {
      name: 'HelloWorld',
      data () {
        return {}
      },
      methods:{
        getParent(){
          alert(this.title);//这里调用的传递过来的title
          alert(this.hello.title);//这里调用的就是传递过来的hello组件的方法
          this.run();//调用传递过来的方法
          this.hello.run();// 调用传递过来的hello组件的的run方法
        }
      },
      props:['title','msg','run','hello'] // 接受 hello 组件
    }
    </script>

    总结:

    父组件给子组件传值

    1、父组件调用子组件的时候,绑定动态属性

    <v-header :title='title'></v-header>

    <v-header :title='title' :msg='msg'>传递两个参数

    2、子组件里面可以通过 props 来进行接收参数

    注意:父组件给子组件传值的时候,尽量不要传递子组件里面已经有的参数。

  • 相关阅读:
    leetcode-----118. 杨辉三角
    leetcode-----117. 填充每个节点的下一个右侧节点指针 II
    leetcode-----116. 填充每个节点的下一个右侧节点指针
    leetcode-----115. 不同的子序列
    leetcode-----114. 二叉树展开为链表
    leetcode-----113. 路径总和 II
    leetcode-----112. 路径总和
    leetcode-----111. 二叉树的最小深度
    windows同时安装jdk7和jdk8
    使用乌龟Git连接github
  • 原文地址:https://www.cnblogs.com/e0yu/p/9801127.html
Copyright © 2011-2022 走看看