详解vue中的事件处理什么时候传递事件对象,什么时候传递数据

大家先看一下代码,详解在下面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
    <!--<button v-on:click="f">登录</button>-->
    <button @click="f1">登录1</button> <br>
    <button @click="f2()">登录2</button><br>
    <hr>
    <button @click="f3">登录3</button> <br>
    <button @click="f4()">登录4</button><br>
    <hr>
    <button @click="f5">登录5</button> <br>
    <button @click="f6(1,2)">登录6</button><br>
    <hr>
    <button @click="f7(6,8,$event)" id="btn">登录7</button><br>
    <hr>
    <div class="plane">
        <h3>标题<span @click="isShow = !isShow">{{isShow ? "收起" : "展开"}}</span></h3>
        <div v-show="isShow" style="width: 200px; height: 200px;background: red">这是一个盒子</div>
    </div>
    <a href="" @click.prevent="f8">百度一下~</a>
</div>
<script>
    /*document.getElementById("btn").onclick = function(){  无效了
        console.log("哈哈哈")
    }*/
    let vm = new Vue({
        el:"#app",
        data:{
            isShow:true
        },
        methods:{
            f1(){  console.log("f1点击了...")  },
            f2(){  console.log("f2点击了...")  },
            f3(e){  console.log("f3点击了...:",e)  },
            f4(e){  console.log("f4点击了...:",e)  },
            // f5调用时,没有加(),函数定义处的第1个参数代表事件对象
            f5(a,b){  console.log("f5点击了...:",a,b)  },
            f6(a,b){  console.log("f6点击了...:",a,b)  },
            f7(a,b,e){  console.log("f7点击了...:",a,b,e)  },
            f8(){  console.log("a标签的点击事件")  }
        }
    })
</script>
</body>
</html>

运行结果如下:
在这里插入图片描述

分析如下:
vue中的事件处理:
通过v-on指令实现事件绑定 登录
可以简写:<button @click="f">登录</button>

1)对于绑定事件的监听器可以加(),也可以不加():
<button @click="f1">登录1</button> <br> <button @click="f2()">登录2</button>

2)如何得到事件对象:
<button @click="f3">登录3</button>
f3不加() 方法中第1个参数就代表事件对象
<button @click="f4()">登录4</button>
绑定时如果加了() 方法定义处第1个参数就不代表事件对象
f3(e){ console.log("f1点击了...:",e) }, f4(e){ console.log("f2点击了...:",e) }

3)参数传递:
<button @click="f5">登录5</button>
不加() 不能传递数据
<button @click="f6(1,2)">登录6</button>
加(),可以传递数据
f5(a,b){ console.log("f5点击了...:",a,b) }, f6(a,b){ console.log("f6点击了...:",a,b) },
4)需要事件对象,还需要传递,怎么做?
<button @click="f7(6,8,$event)">登录7</button>
f7(a,b,e){ console.log(“f7点击了…:”,a,b,e) }

监听器:
1)如果监听器比较简单,写在行内
2)如果监听器复杂,直接封装一个函数,写在methods中的
vue中使用事件修饰符阻止默认事件:
<a href="" @click.prevent="f8">百度一下~</a>

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值