vue父子组件传值

1. 父组件向子组件传值

  1. 创建一个两个组件,一个父组件,一个子组件,父组件定义如下:
<template>
      <div class='parent'>
            <child  :tableData='tableData'></child>
      </div>
</template>

<script>
  import child from './child.vue'
  export default {
      name: 'parent',
      components: { child },
      data () {
          return {
              tableData: [1,2,3,4,5,6]
          }
      }
  }
</script>

<style>
</style>
  1. 子组件定义如下
<template>
      <div class='child'>
            <ul>
                <li v-for='(item, index) in tableData' :key='index'>{{ item }}</li>
            </ul>
      </div>
</template>

<script>
  export default {
      name: 'child',
      props: ['tableData'],
      data () {
          return {
          }
      }
  }
</script>

<style>
</style>

2. 子组件向父组件传值

  1. 创建一个两个组件,一个父组件,一个子组件,子组件定义如下:
<template>
      <div class='child'>
            <child  @click='sendDataToParent'></child>
      </div>
</template>

<script>
  export default {
      name: 'child',
      data () {
          return {
              tableData: [1,2,3,4,5,6]
          }
      },
      methods: {
        sendDataToParent() {
           this.$emit('datas',this.$data.tableData);
        }
      }
  }
</script>

<style>
</style>
  1. 父组件定义如下
<template>
      <div class='parent'>
            <child @datas='reciveData'></child>
      </div>
      <ul>
        <li v-for='(item, index) in tables' :key='index'>{{ item }}</li>
      </ul>
</template>

<script>
  import child from './child.vue'
  export default {
      name: 'parent',
      components: { child },
      data () {
          return {
              tables: []
          }
      },
     methods: {
        reciveData(data) {
          this.$data.tables = data
        }
      }
  }
</script>

<style>
</style>

3. 父组件调用子组件的方法

  1. 创建一个两个组件,一个父组件,一个子组件,父组件定义如下:
<template>
      <div class='parent'>
            <child ref='child'></child>  //  调用子组件方法,必须加ref属性
            <p @click='getChildMethod'>调用子组件的方法</p>
      </div>
</template>

<script>
  import child from './child.vue'
  export default {
      name: 'parent',
      components: { child },
      data () {
          return {
              tableData: [1,2,3,4,5,6]
          }
      },
      methods: {
        // 此方法内,父组件内调用子组件的方法
        getChildMethod() {
            this.$refs.child.sayHi();
         }
      }
  }
</script>

<style>
</style>
  1. 子组件定义如下
<template>
      <div class='child'>
            <ul>
                <li v-for='(item, index) in tableData' :key='index'>{{ item }}</li>
            </ul>
      </div>
</template>

<script>
  export default {
      name: 'child',
      data () {
          return {
              tableData: [1,2,3,4,5,6]
          }
      },
      methods: {
          sayHi() {
              console.log('hello world!')
           } 
      }
  }
</script>

<style>
</style>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。