Vue入门之自定义事件$emit-父组件获取子组件的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue入门之自定义事件$emit-父组件获取子组件的数据相关的知识,希望对你有一定的参考价值。

参考技术A 前面讲过通过props子组件很容易就可以获取到父组件的数据,但是父组件怎么获取子组件的数据呢?通过查资料,发现可以通过自定义事件来实现父组件与子组件之间的通信。
首先,得创建一个子组件模板文件,子组件在父组件中用的时候,总得有个触发动作可以获取到子组件的数据吧,所以,加个按钮,触发个动作。如下所示:

App.vue

Vue-$emit的用法

1、父组件可以使用 props 把数据传给子组件。
2、子组件可以使用 $emit 触发父组件的自定义事件。

vm.$emit( event, arg ) //触发当前实例上的事件

vm.$on( event, fn );//监听event事件后运行 fn; 

子组件

<template>  
  <div class="train-city">  
    <h3>父组件传给子组件的toCity:{{sendData}}</h3>   
    <br/><button @click=‘select(`大连`)‘>点击此处将‘大连’发射给父组件</button>  
  </div>  
</template>  
<script>  
  export default {  
    name:‘trainCity‘,  
    props:[‘sendData‘], // 用来接收父组件传给子组件的数据  
    methods:{  
      select(val) {  
        let data = {  
          cityname: val  
        };  
        this.$emit(‘showCityName‘,data);//select事件触发后,自动触发showCityName事件  
      }  
    }  
  }  
</script>  

父组件:

<template>  
    <div>父组件的toCity{{toCity}}</div>  
    <train-city @showCityName="updateCity" :sendData="toCity"></train-city>  
<template>  
<script>  
  import TrainCity from "./train-city";  
  export default {  
    name:‘index‘,  
    components: {TrainCity},  
    data () {  
      return {  
        toCity:"北京"  
      }  
    },  
    methods:{  
      updateCity(data){//触发子组件城市选择-选择城市的事件  
        this.toCity = data.cityname;//改变了父组件的值  
        console.log(‘toCity:‘+this.toCity)  
      }  
    }  
  }  
</script>  

 


以上是关于Vue入门之自定义事件$emit-父组件获取子组件的数据的主要内容,如果未能解决你的问题,请参考以下文章

vue之自定义组件的写法与用法

Vue 组件&组件之间的通信 之 子组件向父组件传值

为啥不更新我在子组件中传递的父组件中的值并更新使用自定义事件 $emit Vue 3?

vue中$refs, $emit, $on, $once, $off的使用详解

vue--父组件向子组件传参--父组件定义v-bind:参数名--子组件接收props----子组件调用父组件的方法(子组件向父组件传参)父组件@事件名称--子组件接收this.$emit

Vue 组件之间传参!