组件自定义事件(绑定)

像click,change这些都是js的内置事件,我们可以直接使用,本次我们学习自己根据需求打造全新的事件,但是js内置的是给html元素用的,本次的自定义事件是给组件用的

注意:组件上也可以绑定原生DOM事件,需要使用native修饰符,销毁组件实例也会销毁组件对应的自定义事件

下面通过案例说明

1 编写案例

如图,我有三个组件,分别是学生,学校和app,由app管理其他两个组件,这时候想给学校组件一个按钮,点击的时候会把学校名称交给app

2 props实现

通过父组件给子组件传递函数类型的props实现:子给父传递数据

我们可以子组件使用props给父组件传递,所以首先在app里面定义函数,然后通过props进行传递使用

3 自定义事件实现方式1

如果我还想继续给student一个按钮,点击的时候把学生姓名给app组件呢?这次不用props了,使用自定义事件实现

通过父组件给子组件绑定自定义事件实现:子给父传递数据

使用$emit触发组件身上的自定义事件,参数是事件名称

当然,使用@简写形式替代v-on也是可以的,我这里没有简写,事件名称和回调名称可以相同的

也是可以完成的

4 自定义事件实现方式2

除了上述的方式,还有另外一种方式可以实现,使用ref,写一个加载钩子函数,使用$on

这种写法虽然麻烦,需要写钩子函数,但是它也更加的灵活

效果都是一样的

如果验证它更加的灵活呢?比如现在有这样的一个需求,需要3秒后才能加载事件,这时候使用第一种写法就写不了,但是第二种写法就可以

5 只能触发一次事件

有的场景,我想要自定义事件触发一次后就不再触发了,这时候就不能使用 o n 这个 a p i 了,应该使用 on这个api了,应该使用 on这个api了,应该使用once

如果不是这种写法呢?也是一样的道理,在事件名称后.once即可

6 多个参数传递

自定义事件也是可以支持传递多个参数的,使用逗号拼接即可

但是一般多个参数不会这么写,而是使用es6里面的…params接收,他会把多个参数拼接成一个数组

组件自定义事件(解绑)

上面介绍了绑定自定义事件,接下来就是对应的解绑自定义事件

1 解绑一个事件

使用$off解绑,参数就是事件名称,这种写法只支持解绑一个事件

那么多个该如何操作呢?

2 解绑多个事件

比如现在有两个自定义事件

使用$off解绑,参数是一个数组,里面是参数名称

3 解绑全部事件

还有一种更加暴力的写法,使用off方法什么也不传,这便是解绑全部事件

组件的自定义事件总结

  1. 一种组件间通信的方式,适用于:子组件 ===> 父组件

  2. 使用场景:A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(事件的回调在A中)。

  3. 绑定自定义事件:

  4. 第一种方式,在父组件中:<Demo @atguigu="test"/><Demo v-on:atguigu="test"/>

  5. 第二种方式,在父组件中:


<Demo ref="demo"/>......mounted(){this.$refs.xxx.$on('atguigu',this.test)}
  1. 若想让自定义事件只能触发一次,可以使用once修饰符,或$once方法。

  2. 触发自定义事件:this.$emit('atguigu',数据)

  3. 解绑自定义事件this.$off('atguigu')

  4. 组件上也可以绑定原生DOM事件,需要使用native修饰符。

  5. 注意:通过this.$refs.xxx.$on('atguigu',回调)绑定自定义事件时,回调要么配置在methods中,要么用箭头函数,否则this指向会出问题!

Vue-组件自定义事件(绑定和解绑)相关推荐

  1. 11-jQuery的事件绑定和解绑

    [转]11-jQuery的事件绑定和解绑 1.绑定事件 语法: bind(type,data,fn) 描述:为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数. 参数解释: type ( ...

  2. jQuery的事件绑定和解绑

    1.绑定事件 语法: bind(type,data,fn) 描述:为每一个匹配元素的特定事件(像click)绑定一个事件处理器函数. 参数解释: type (String) : 事件类型 data ( ...

  3. jQuery事件绑定和解绑

    jQuert事件 1.1. jQuery 事件注册 ​ jQuery 为我们提供了方便的事件注册机制,是开发人员抑郁操作优缺点如下: 优点: 操作简单,且不用担心事件覆盖等问题. 缺点: 普通的事件注 ...

  4. 03-jQuery事件绑定和解绑

    文章目录 一.绑定事件 二.解绑和触发 一.绑定事件 on().one().hover().常用事件函数 on(): 1.基础绑定事件 语法:元素集合.on('事件类型',事件处理函数) $('div ...

  5. Vue组件自定义事件

    <!DOCTYPE html> <html><head><meta charset="utf-8"><script src=& ...

  6. Vue之组件自定义事件的绑定和解绑

    不知道小伙伴们还记不记得在用 Vue 构建 TodoList 案例的博客中,我们有涉及到要从子组件中把数据传递给父组件,当时我用的方法是,让父组件给子组件传递一个函数,然后子组件把要传过来的数据放在那 ...

  7. JS事件的绑定和解绑

    /* 事件三要素 1.事件源:在谁的身上绑定事件 2.事件类型:什么事件 3.事件处理函数:当行为发生的时候,执行那一个函数 ==>div.οnclick=function(){} ==> ...

  8. vue:组件自定义事件、绑定、解绑事件

    vue:组件自定义事件.绑定.解绑事件 自定义组件绑定事件: 使用方法:在引入组件中的methods定义一个回调方法,在组件标签中使用如下两种方式自定义事件,去到引入的组件的中,使用 this.$em ...

  9. Vue组件学习之组件自定义事件

    主要介绍组件的自定义事件的概念,使用等. 何为组件自定义事件: 组件自定义事件是一种组件间的通信方式,方向是 子组件====>父组件. 使用场景:A是子组件,B是父组件,如果要把B的数据传给A, ...

最新文章

  1. DOS下读取4GB内存
  2. 移动端popstate的怪异行为
  3. 【新星计划】Python print输出带颜色 总结
  4. arm学习笔记五(c/c++与arm汇编混合编程)
  5. mysql实例化_mysql多实例实例化数据库
  6. 【C语言进阶】 宏定义实现字符串引用
  7. mnist数据集读取并保存为Numpy数组
  8. torch.index_select与torch.gather
  9. java io 字节流_Java之IO-字节流
  10. css盒模型(附图解)
  11. Barcode for Mac(条形码生成器)
  12. 精讲贪吃蛇(c语言篇)(代码可直接取)
  13. 京瓷打印机m5521cdn_京瓷M5521cdn驱动-京瓷ECOSYS M5521cdn打印机驱动下载 v5.1.2106官方版--pc6下载站...
  14. 双光耦开关电源电路图_几种常见开关电源电路图
  15. 【论文精读】Learning Bounds for Importance Weighting
  16. (2) python--pandas
  17. HTML5期末大作业:生态环境网站设计——环境保护主题-绿色环保 (9页) web期末作业设计网页_绿色环保大学生网页设计作业成品
  18. 人像姿势,从细节做起!
  19. 利用Python实现scissors-rock-paper-lizard-Spock小游戏
  20. java mac地址 加冒号_Mac加减法,Mac地址加1,Mac地址减1

热门文章

  1. 翻转电平函数实现LED闪烁-STM32电控学习笔记05
  2. 使用STM32F103C8T6驱动NRF24L01具体步骤
  3. 【西安交通大学程序设计基础Moodle实验13】 百钱买百鸡
  4. 关于BH1750数字光强度传感器
  5. 我为乘客服务 ——汉译英
  6. 操作系统:处理器调度
  7. 来了,mghio 的微信红包封面!
  8. 装修遗憾大全 (看的越早、遗憾越少)
  9. python抠图精确到发丝_3行Python代码,实现批量抠图和换底色的方法
  10. USB人体学输入设备黄色感叹号