• Vue中自定义事件


    事件我们并不陌生,以前我们都是用的框架帮我们配置好的事件,我们称为原生事件。通过v-on:或者@绑定事件,事件触发时执行对应的程序。

    今天我们自己来创建一个事件,我们要先知道事件的三要素:事件源 target 、事件类型type 、监听器handler

    在自定义事件中,事件源就是我们设置的组件,事件类型我们自己命名,监听器就是事件绑定的那个函数,我们想要完成一个组件的完成,我们需要在组件中用到vm对象原型上的一个方法:this.$emit("事件类型名","要给触发的事件的函数handler传入值(可省)")

    我们来试一下:

    创建box1.vue组件并设置一个事件:事件名为myevent,事件触发条件为msg=5时才触发。

    1. <script>
    2. export default{
    3. data() {
    4. return {
    5. msg:1
    6. }
    7. },
    8. methods: {
    9. add(){
    10. this.msg++
    11. if (this.msg==5) {
    12. this.$emit("myevent",1,"参数2")
    13. }
    14. }
    15. },
    16. }
    17. script>
    18. <style>
    19. .box1{
    20. width: 100px;
    21. height: 100px;
    22. background-color: aqua;
    23. }
    24. style>

    在app.vue组件中,导入注册box1组件,并使用其myevent事件:绑定的监听器为fn函数,事件触发时控制台打印信息和我们用arguments接收传入的参数。

    1. <script>
    2. import Box1 from "@/components/box1.vue"
    3. export default {
    4. methods: {
    5. fn(){
    6. console.log("事件触发了",arguments);
    7. }
    8. },
    9. components:{
    10. Box1,
    11. }
    12. }
    13. script>
    14. <style>
    15. .app{
    16. width: 400px;
    17. height: 400px;
    18. background-color: burlywood;
    19. }
    20. style>

    效果:

    二、也可以通过this.$emit()这个方法来实现给组件标签间接绑定原生事件,让子组件的原生事件触发时调用父组件的函数。

    代码展示:创建box2.vue组件并当组件内事件触发时创建事件。

    1. <script>
    2. export default{
    3. methods: {
    4. fn(){
    5. this.$emit("click1")
    6. }
    7. },
    8. }
    9. script>
    10. <style>
    11. .box2{
    12. width: 200px;
    13. height: 200px;
    14. background-color: yellow;
    15. }
    16. style>

    在app.vue组件中,导入注册box2组件,并为创建的对象提供函数。

    1. <script>
    2. import Box2 from "@/components/box2.vue"
    3. export default {
    4. methods: {
    5. fn1(){
    6. console.log("原生");
    7. }
    8. },
    9. components:{
    10. Box2
    11. }
    12. }
    13. script>
    14. <style>
    15. .app{
    16. width: 400px;
    17. height: 400px;
    18. background-color: burlywood;
    19. }
    20. style>

     三、事件修饰符.native,通过这个可以直接在组件上绑定原生属性。

    如:给上面的Box2绑定点击事件

  • 相关阅读:
    王兴投资5G小基站
    低代码开发:智能财务系统开发应用
    分布式协调系统ZooKeeper实践与原理剖析
    0067 练习
    【Linux】线程安全
    [附源码]java毕业设计汽车租赁管理系统-
    Spring系列26:Spring AOP 通知与顺序详解
    Vue3 <script setup> 单文件组件 组合式 API 相关语法
    SpringBoot - 集成Quartz框架之Quartz简介
    JVM调优实战
  • 原文地址:https://blog.csdn.net/m0_59345890/article/details/126730572