vue中使用v-on绑定一个方法的参数传递问题

本文探讨了在Vue中使用v-on绑定方法时的参数传递问题。情况一是若方法不需要额外参数,不加括号即可,但若方法已有形参,即使不显式传参,仍会默认传递event。情况二是需传入参数和event时,可借助$event传入。

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

当通过 methods 中定义方法,以供@click调用时,需要注意参数问题:

情况一:

如果该方法不需要传递额外参数,那么方法后的括号 () 可以不加。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>
<body>

<div id="app">
  <!-- 此处加不加括号两个按钮的效果是一样的 -->
  <button @click="btnClick1">按钮1</button>
  <button @click="btnClick2()">按钮2</button>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
  let vm = new Vue({
    el: "#app",
    data: {},
    methods: {
      btnClick1() {
        console.log(1);
      },
      btnClick2() {
        console.log(2);
      }
    }
  });
</script>
</body>
</html>

注意:如果 methods 中定义的方法中本身有一个形参,但是在 @click 绑定方法的时候没有显式的传入实参,那么会默认将原生事件 event 参数传递进去。

<div id="app">
  <!-- 没有传递参数 -->
  <button @click="btnClick3">按钮3</button>

  <!-- 如果加(),下边打印出来的 event 将是 undefined -->
  <!--  <button @click="btnClick3()">按钮3</button>-->
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
  let vm = new Vue({
    el: "#app",
    data: {},
    methods: {
      //这里有一个形参
      btnClick3(event) {
        console.log(event);
      }
    }
  });
</script>

在这里插入图片描述


情况二

如果在 @click 绑定方法的时候需要传入某个参数,同时又需要 event 时,可以通过 $event 传入事件。

<div id="app">
  <button @click="btnClick4('我是灰太狼',$event)">按钮4</button>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
  let vm = new Vue({
    el: "#app",
    data: {},
    methods: {
      btnClick4(name,event) {
        console.log(name);
        console.log(event);
      }
    }
  });
</script>

在这里插入图片描述

前端学习交流QQ群,群内学习讨论的氛围很好,大佬云集,期待您的加入:862748629 点击加入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值