• 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 来进行接收参数

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

  • 相关阅读:
    转 [Lucene.Net] 基本用法
    万商网与Alibaba等的比较
    B2B闯入者 新势力正在崛起
    项目管理随想一
    【转载】/proc目录中的重要信息
    文件名乱码转换器
    C函数调用中对入参取地址引发的问题
    编译通过的代码不算什么,一眼能看懂的代码才算好代码
    Handler使用
    删除system/app下的apk
  • 原文地址:https://www.cnblogs.com/e0yu/p/9801127.html
Copyright © 2020-2023  润新知