美文网首页
Vue 父子组件通信

Vue 父子组件通信

作者: 普罗旺斯S | 来源:发表于2022-05-17 21:55 被阅读0次

案例一

父组件

<template>
  <div>
    <div @click="click">点击父组件</div>
    <child ref="child"></child>
  </div>
</template>

<script>
import child from "./groundCrudeOilImg";
export default {
  methods: {
    click() {
      this.$refs.child.$emit('childMethod','发送给方法一的数据') // 方法1:触发监听事件
      this.$refs.child.callMethod() // 方法2:直接调用
    },
  },
  components: {
    child,
  }
}
</script>

子组件

<template>
  <div>子组件</div>
</template>

<script>
export default {
  mounted() {
    this.monitoring() // 注册监听事件
  },
  methods: {
    monitoring() { // 监听事件
      this.$on('childMethod', (res) => {
        console.log('方法1:触发监听事件监听成功')
        console.log(res)
      })
    },
    callMethod() {
      console.log('方法2:直接调用调用成功')
    },
  }
}
</script>

案例二

父组件

<template>
  <div id="app">
    <!-- 所有的内容要被根节点包含起来 -->
    <div id="home">
      <aaa ref="header"></aaa>
      <hr>
      首页组件
      <button @click="getChildData()">获取子组件的数据和方法</button>
    </div>
  </div>
</template>

<script>
/*
父组件给子组件传值
    1.父组件调用子组件的时候 绑定动态属性
        <v-header :title="title"></v-header>
    2、在子组件里面通过 props接收父组件传过来的数据
        props:['title']
        props:{
            'title':String
        }
    3.直接在子组件里面使用
    
父组件主动获取子组件的数据和方法:
    1.调用子组件的时候定义一个ref
        <v-header ref="header"></v-header>
    2.在父组件里面通过
        this.$refs.header.属性
        this.$refs.header.方法

子组件主动获取父组件的数据和方法:
        this.$parent.数据
        this.$parent.方法
*/
import aaa from "./aa.vue";

export default {
  name: 'App',
  data(){
    return {
      msg:'我是一个首页组件',
      title:'首页111'
    }
  },
  components:{
    'aaa':aaa
  },
  methods:{
    run(){
      alert('我是首页组件的run方法');
    },
    getChildData(){
      // 父组件主动获取子组件的数据:
      alert(this.$refs.header.msg);
      // 父组件主动获取子组件的方法
      this.$refs.header.run()
      // 父组件主动获取子组件的方法返回值:
      alert(this.$refs.header.run())
    }
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

子组件

<template>
  <div>
    <h2>我是头部组件</h2>
    <button @click="getParentData()">获取子组件的数据和方法</button>
  </div>
</template>
<script>
export default {
  name: 'aa',
  data(){
    return{
      msg:'子组件的msg'
    }
  },
  methods:{
    run(){
      alert('我是子组件的run方法')
      return"我是子组件的run方法"
    },
    getParentData(){

      // 子组件主动获取父组件的数据和方法:
      this.$parent.msg
      this.$parent.方法
      alert(this.$parent.msg);
      this.$parent.run();
    }
  }
};
</script>

<style lang="scss" scoped>

</style>

相关文章

  • Vue相关知识点

    1、vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不...

  • Vue如何实现组件通信?

    Vue组件通信的三种情况: 父子通信 爷孙通信 兄弟通信 父子通信:父组件使用Prop向子组件传递数据,子组件通过...

  • vue组件间通信的一些实用方法(VUE2.x)

    vue组件间通信的一些实用方法(VUE2.x) 一、父子组件间通信 常用的父子组件通信方法,一般涉及props和$...

  • vue2中eventbus遇到的坑

    前言 vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数...

  • Vue事件总线(EventBus)使用详细介绍

    前言 vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数...

  • Vue事件总线(EventBus)

    vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过props向下传数据给子组件...

  • VUE - EventBus

    vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数据给子...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

  • 09-生命周期及非父子组件间的通信

    一. Vue生命周期 二、生命周期代码 三、非父子组件通信 vue中非父子组件通信需要借助一个空的vue实例,案...

  • Vue组件通信

    Vue 组件之间的通信,通常我们遇到的都是父子组件之间的通信 一、父子组件传参 子组件定义 Props 属性; 父...

网友评论

      本文标题:Vue 父子组件通信

      本文链接:https://www.haomeiwen.com/subject/gcfourtx.html