Vue中绑定动态事件

一、背景说明

有些情况我们需要根据情况不同绑定不同的事件,比如:当这个元素为button的时候我需要绑定click事件,当为input的时候,我需要绑定change事件

二、核心实现点

 @[eventName]="eventHanldler"
  • eventName是个响应式数据,它的值就是你的事件名称,如‘click’、‘input’、‘change’等,
  • eventHanldler是你的事件处理函数

二、Vue2中动态事件的绑定

<template>
  <div>
    <!-- native在组件上面绑定原生事件 -->
    <!-- component动态组件  绑定is修改当前展示的组件 -->
    <component
      @[eventName].native="eventHanldler"
      :is="currentComponent"
    ></component>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 动态组件名,myButton为按钮组件 myInput为输入框组件
      currentComponent: "myButton",
      // 事件名
      eventName: "click",
    };
  },
  methods: {
    // 事件处理函数
    eventHanldler() {},
    // 改变事件名字
    changeEventName() {
      this.eventName = "change";
    },
    // 改变组件
    changeComponent() {
      this.currentComponent = "myInput";
    },
  },
};
</script>

二、Vue3中动态事件的绑定

<script setup>
import { ref } from "vue";
// 动态组件名,myButton为按钮组件 myInput为输入框组件
const currentComponent = ref("myButton");
// 事件名
const eventName = ref("click");

// 事件处理函数
const eventHanldler = () => {};
// 改变事件名字
const changeEventName = () => {
  eventName.value = "change";
};
// 改变组件
const changeComponent = () => {
  currentComponent.value = "myInput";
};
</script>

<template>
  <!-- component动态组件  绑定is修改当前展示的组件 -->
  <component @[event]="eventHanldler" :is="currentComponent"></component>
</template>
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值