HTML使用vue的 event,vue-js 特殊变量$event常识

背景

如果我们要阻止默认事件,在 chrome 等浏览器中,我们可能要写一个:

event.preventDefault();

而在 IE 中,我们则需要写:

event.returnValue = false;

jquery ,跨浏览器的实现,我们统一只需要写:

event.preventDefault();

vue 中的 event 对象

相比于 jquery,vue 的事件绑定可以显得更加直观和便捷,我们只需要在模板上添加一个 v-on 指令(还可以简写为 @),即可完成类似于 $('xxx').bind 的效果,少了一个利用选择器查询元素的操作。我们知道,jquery 中,event 对象会被默认当做实参传入到处理函数中,如下:

$('body').bind('click', function (event){

console.log(typeof event); // object

});

这里直接就获取到了 event 对象,那么问题来了,vue 中呢?

click me

...

var app = new Vue({

el: '#app',

methods: {

click(event) {

console.log(typeof event); // object

}

}

});

原来,vue.js通过将一个特殊变量 $event 传入到回调中解决这个问题!!!

简单总结其用法:

使用不带圆括号的形式,event 对象将被自动当做实参传入;

使用带圆括号的形式,我们需要使用 $event 变量显式传入 event 对象。

乌龙

类似下面的代码:

click me

...

var app = new Vue({

el: '#app',

methods: {

click(val) {

console.log(typeof event); // object

}

}

});

丢进 chrome 里面一跑,经测试是可以的,打印 arguments.length,也是正常的 1

既没有传入实参,也没有接收的形参,这个 event 对象的来源window.event

window.event,ie 和 chrome 都在 window 对象上有这样一个属性:

506f7f9a7b857d01df639e13e83125a2.png

window.event

代码丢进 Firefox 中运行,event 果然就变成了 undefined 了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值