第六节——Vue中的事件

本文详细介绍了Vue中元素事件处理的基本语法,包括使用`@`修饰符绑定事件和方法,以及常用事件修饰符如.stop、.prevent和.once的用法。此外,还讲解了event对象的传递和在函数内部正确使用`this`的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、定义事件

Vue 元素的事件处理和 DOM 元素的很相似,但是有一点语法上的不同

使用@修饰符(v-on:的缩写)+事件名的方式 给dom添加事件后面跟方法名,方法名可以直接加括号如@click="add()"里面进行传参。对应的事件处理函数必须在 methods对象中定义。

<template>
  <div>
    <!-- 在button上定义点击事件 -->
    <button @click="hello('传入的参数')">你好</button>
  </div>
</template>
<script>
export default {

  /**
   * methods 在vue定义 方法的属性对象
   * 所有的方法都必须在methods里面定义
   */
  methods: {
    hello (msg) {
      console.log("事件触发啦哈哈哈")
      console.log(msg)
    }
  }
}

</script>

二、事件修饰符

为了更好地处理事件,Vue3提供了一些便利的事件修饰符。事件修饰符可以用于改变默认事件行为、限制事件触发条件等如.stop、.prevent、.capture、.self、.once等等。下面是一些常用的事件修饰符用法

1、.stop

阻止事件冒泡,即停止事件在父元素中的传播。

<template>
  <div class="box"  @click="handle2">
    <div class="box2" @click="handle"></div>
  </div>
</template>

<script>
export default {

  methods: {
    handle () {
      console.log('触发')
    },

    handle2 () {
      console.log("冒泡")
    }
  }
}

</script>

2、.prevent

阻止事件的默认行为,如提交表单或点击链接后的页面跳转。

<template>
  <!-- 只触发点击事件,不触发跳转 -->
  <a href="https://www.baidu.com" @click.prevent="handle">百度</a>
</template>

<script>
export default {
  methods: {
    handle() {
      console.log("触发");
    }
  },
};
</script>

3、.once

只触发一次事件处理方法,之后解绑事件

<template>
  <button @click.once="handle">点击一次就失效</button>
</template>

<script>
export default {
  methods: {
    handle() {
      console.log("触发");
    },
  },
};
</script>

三、event对象

1、默认传入获取event

<template>
  <!-- 
    如果事件什么都不传、并且不写()
    那么事件处理函数会默认接收到event对象
   -->
  <button @click="handle">点击</button>
</template>

<script>
export default {
  methods: {
    handle(event) {
      console.log(event);
    },
  },
};
</script>

2、携带其他参数获取event

<template>
  <!-- 
    使用在template里面使用$event获取当前事件的event对象
   -->
  <button @click="handle('第一个参数', $event)">点击</button>
</template>

<script>
export default {
  methods: {
    handle(msg, event) {
      console.log(event);
    },
  },
};
</script>

四、在函数内使用this获取当前Vue上下文

可以直接使用this.xx 使用data里定义的状态,或者使用this.xx()调用methods里面定义的其他函数

注意:this指向问题

<template>
  <button @click="handle">点击</button>
</template>

<script>
export default {
  data() {
    return {
      num: 1,
    };
  },

  methods: {
    handle() {
      console.log(this.num);
      this.handle2()
    },
    handle2() {
      console.log("第二个方法");
    },
  },
};
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值