美文网首页
vue的$emit

vue的$emit

作者: 小狼在IT | 来源:发表于2018-08-25 17:09 被阅读0次

子组件:

<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>

父组件:

    <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>

说明:
在子组件中使用this.$emit('showCityName',data),调用在父组件定义的showCityName方法(<train-city @showCityName="updateCity" .../>);
然后在父组件中,showCityName方法是被赋值到updateCity方法的。

相关文章

网友评论

      本文标题:vue的$emit

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