vue中 关于$emit的用法

vue中 关于$emit的用法1、父组件可以使用props把数据传给子组件。2、子组件可以使用$emit触发父组件的自定义事件。vm.$emit(event,arg)//触发当前实例上的事件vm.$on(event,fn);//监听event事件后运行fn;例如:子组件:<template><divclass=”train-city”>&l………

大家好,又见面了,我是你们的朋友全栈君。

vue2.x

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>
        <div>父组件的toCity{
  
  {toCity}}</div>
        <train-city @showCityName="updateCity" :sendData="toCity"></train-city>
    </div>
<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中 关于$emit的用法

vue3.x

 子组件

<template>
  <div class="train-city">
    <h3>父组件传给子组件的toCity:{
  
  {sendData}}</h3> 
    <br/><button @click='select(`大连`)'>点击此处将‘大连’发射给父组件</button>
  </div>
</template>

<script>
export default {
  name: "train-city",
  props:{
    sendData:{
      Type:String,
      default:""
    }
  },
  emits: ["showCityName"],
  setup(props,{emit}) {
    return {
      select: () => { emit('showCityName') }
    }
  },
}
</script>

父组件

<template>
    <div>
        <div>父组件的toCity{
  
  {toCity}}</div>
        <train-city @showCityName="updateCity" :sendData="toCity"></train-city>
    </div>
<template>
<script>
import TrainCity from "./train-city";
import { reactive, toRefs} from '@vue';
export default {
  name: "parent-com",
  components: { TrainCity },
  setup() {
    const state = reactive({ toCity:"北京" })  

    const updateCity = (data) => {
         state.toCity = data.cityname;//改变了父组件的值
         console.log('toCity:' + state.toCity)
    }

    return {
      ...toRefs(state ),
      updateCity
    }
  },
}
</script>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152848.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vue.js构建项目笔记2:vuejs+vue-router

    Vue.js构建项目笔记2:vuejs+vue-router

    2022年3月7日
    36
  • 一阶惯性环节低通滤波_二阶有源低通滤波器原理

    一阶惯性环节低通滤波_二阶有源低通滤波器原理一阶惯性滤波传递函数为采用后向差分离散化可得其中Tsam是采样周期,将z函数写成差分递推式(1)浮点型//k为时间常数,是采样周期的k倍。Target_Value被滤波的值。*temp_IQ_fifter是滤波后的值。voidFifter_P…

    2022年10月4日
    0
  • 适用于protel99SE初学者

    适用于protel99SE初学者本文适合零基础者学习protel99SE很多网友渴望自己设计电路原理图(SCH)、电路板(PCB),同时希望从原始SCH到PCB自动布线、再到成品PCB电路板的设计周期可以缩短到1天以内!是不是不可能呢?当然不是,因为现在的EDA软件已经达到了几乎无所不能的地步!由于电子很重实践,可以说,不曾亲自设计过PCB电路板的电子工程师,几乎是不可想象的。很多电子爱好者都有过学…

    2022年5月7日
    49
  • java编译环境配置

    java编译环境配置1.设置PATH环境变量右击桌面上的计算机图标,单击属性菜单项,系统显示控制面板主页,单击高级系统设置,出现系统属性对话框,再单击高级,出现如下图所示的对话框。单击环境变量按钮,将看到如下图所示的环境变量对话框,通过该对话框可以修改或添加环境变量。上图所示的对话框上面的用户变量用于设置当前用户的环境变量,系统变量用于设置整个系统的环境变量。对于windows系统而言,名为pat…

    2022年6月2日
    41
  • 怎么查看线程的状态及interrupt优雅的关闭线程和interrupt()、interrupted()、isInterrupted()的作用以及区别在哪?

    怎么查看线程的状态及interrupt优雅的关闭线程和interrupt()、interrupted()、isInterrupted()的作用以及区别在哪?示例:查看状态:刚才我们讲过,一个线程里面任务正常执行完毕,状态就是TERMINATED,就是终止状态。但是,如果我线程里面的任务一直没有执行完成,我想去终止这个线程,或者我给点信息给到线程里,告诉线程我想终止结束呢!所以我可以强制去关闭线程:线程提供一个stop方法,该方法不建议使用,已经过时了!!因为stop是强行关闭线程,线程里面的任务都不在执行,不管线程的任务是否执行成功与否,就算执行到一半也会强制关闭!导致很多不可控制的结果,比如支付付一半等等!!所以我们要需要去优雅的关闭。什么叫做优雅关

    2025年7月29日
    1
  • python和delphi哪个好_python编程时如何修改撤回

    python和delphi哪个好_python编程时如何修改撤回原博文2020-03-2818:10−复制行,在代码行光标后,输入Ctrl+d,即为复制一行,输入多次即为复制多行撤销上一步操作:Ctrl+z为多行代码加注释#代码选中的条件下,同时按住Ctrl+/,被选中行被注释,再次按下Ctrl+/,注…0319相关推荐2019-12-2423:37−djangoTermipython:manage.pymakemigrati…

    2022年8月27日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号