本篇讨论vue中使用$emit实现子向父通信,

第一步:我们在父组件中注册子组件,然后再给子组件标签添加一个自定义事件监听,这样在子组件实例上就绑定了一个自定义的事件add。

  后面如果触发add事件,那么就会执行addBtnClick函数。

 1 <template>
2 <div>
3 <h1>当前数为:{{ counter }}</h1>
4 <!-- 自定义add -->
5 <Add @add="addBtnClick"></Add>
7 </div>
8 </template>
9
10 <script>
11 import Add from './components/Add.vue';13 export default {
14 name:'App',
15 components: {
16 Add,18 },
19 data () {
20 return {
21 counter:0
22 }
23 },
24 methods: {
25 addBtnClick(count){
26 this.counter += count;
27 },31
32 }
33 }
34 </script>
35
36 <style scoped>
37
38 </style>

第二步:怎么去触发add事件呢,点击事件鼠标点击触发,键盘事件,按键盘触发,而自定义事件这里就用到了Vue提供的$emit去触发。

  这里给谁绑定的事件就找谁触发,我们是给Add组件绑定的事件,那么就应该让Add组件去触发自定义事件add,  

  那怎么去执行$emit呢,这时我们就可以在Add组件中写一个按钮,然后添加点击事件,然后点击事件触发回调函数btnClick然后执行回调函数的代码。

  当然我们也可以用watch监听器,去监听某一个数据,当数据发生改变时,触发自定义事件add也是可以的。

  这里我就用点击事件简单点,点击按钮触发回调函数。然后再用$emit去触发自定义事件,这里$emit是可以传入多个参数的

 1 <template>
2 <div>
3 <button @click="btnClick(1)">+1</button>
4 </div>
5 </template>
6
7 <script>
8 export default {
9 name: 'Add',
10 methods: {
11 btnClick(i){
12 // 触发自定义事件
13 this.$emit('add',i);//第一个参数是自定义事件的名称,第二个是传递出去的参数
14 }
15 }
16 }
17 </script>
18
19 <style scoped></style>

第三步:当add自定事件被触发,那么addBtnClick回调函数就会被执行,当执行函数时子组件通过$emit传递过来的,参数就可以被addBtnClick接收到

以上仅供参考学习,如果错误,请大佬指出,万分感谢。一起学习一起进步。

vue中通过$emit实现子向父通信的更多相关文章

  1. Vue中利用$emit实现子组件向父组件通信

    Vue中利用$emit实现子组件向父组件通信 父组件 <template> <div> <p>我是父组件</p> <child :isShow=& ...

  2. VUE中 $on, $emit, v-on三者关系

    VUE中 $on, $emit, v-on三者关系 每个vue实例都实现了事件借口 使用$on(eventName)监听事件 使用$emit(eventName)触发事件 若把vue看成家庭(相当于一 ...

  3. 关于CSS中的定位使用子绝父相(子类绝对位置和父类相对位置)

    关于CSS中的定位使用子绝父相(子类绝对位置和父类相对位置) 欢迎转发,但是请填写原博客地址https://www.cnblogs.com/JNovice/p/9536910.html  前言:最近在 ...

  4. Vue ---- 组价 组件化 子传父 父传子

    目录 补充js的for循环: 组件 1.组件的分类: 2.组件的特点 3.创建局部组件 4.全局组件 二.组件化 一.组件传参父传子 二.组件传参:子传父 补充js的for循环: // for in遍 ...

  5. vue的逆向传值(子传父)

    逆向传值:子组件传值给父组件叫做逆向传值  (是不v欸允许的,必须经过事件触发才能传值) 逆向传值步骤: 1.要传值必须先抛出,在接收 语法: this.$emit("event" ...

  6. vue中 关于$emit的用法

    1.父组件可以使用 props 把数据传给子组件.2.子组件可以使用 $emit 触发父组件的自定义事件. vm.$emit( event, arg ) //触发当前实例上的事件 vm.$on( ev ...

  7. Vue中的$emit组件事件运用

    话不多说上代码 vue>src>App.vue <template> <div id="app"> <!-- header --> ...

  8. 总结vue中父向子,子向父以及兄弟之间通信的几种方式

    子向父方式1:通过props,如例子中子组件test1.vue向父组件App.vue传值 App.vue代码 <template> <div id="app"&g ...

  9. vue中父组件如何监听子组件值的变化

    vue中我们会遇到很多父子组件通信的需求, 下面简单列一下,父子组件通信的几种情况 1:父组件向子组件传值:使用prop向子组件传值: 2:子组件实时监听父组件传来的值的变化:使用watch去监听父组 ...

  10. vue.js 创建组件 子父通信 父子通信 非父子通信

    1.创建组件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

随机推荐

  1. 新的世界,我们推荐不劳而获 -> 持续更新中

    随着技术带来的生产力爆发越来越猛烈,有人提出是不是有必要保留一些落后的生产工艺及相关岗位,以避免社会动荡. 我的答案:不用.但是要改变社会对于不劳而获的态度:我们对于生活资料的不劳而获持接受的态度,但 ...

  2. install package within python

    import os os.system("pip install numpy") import subprocess subprocess.call(['pip3', 'insta ...

  3. Caused by: java.lang.NoClassDefFoundError: net/minidev/asm/FieldFilter 报错的解决

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'r ...

  4. maven常用镜像源

    <mirrors> <mirror> <id>ibiblio</id> <mirrorOf>central</mirrorOf> ...

  5. Python第七章实验报告

    一.实验名称:<零基础学Python>第7章 面向对象程序设计 二.实验环境:IDLE Shell 3.9.7 三.实验内容:5道实例.4道实战 四.实验过程: 实例01 创建大雁类并定义 ...

  6. Java--接口和抽象类有什么区别

    他们都不能实例化对象,都可以包含抽象方法,而且抽象方法必须被继承的类全部实现. 区别: 1.抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实 ...

  7. P2962 [USACO09NOV]Lights G(Meet In The Middle)

    [USACO09NOV]Lights G 题目描述 给出一张n个点n条边的无向图,每个点的初始状态都为0. 你可以操作任意一个点,操作结束后该点以及所有与该点相邻的点的状态都会改变,由0变成1或由1变 ...

  8. Vscode 界面语言换成中文

    作为编译器,Visual Studio Code是非常多能化的,但是界面英文对于我这种菜鸟新手造成了很大的困扰. 所以切换成中文更方便. Ctrl+shift+x   在左侧出现"扩展&qu ...

  9. vue项目 运行内存溢出

    运行vue项目报错,内存溢出!!! <--- Last few GCs ---> [10400:00000218A86135D0] 173902 ms: Mark-sweep (reduc ...

  10. 熹乐科技范维肖CC:基于开源 YoMo 框架构建“全球同服”的 Realtime Metaverse Application

    前言 在「RTE2022 实时互联网大会」中,熹乐科技创始人 & CEO @范维肖CC 以<基于开源 YoMo 框架构建"全球同服"的 Realtime Metave ...