背景

如果我们要阻止默认事件,在 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 中呢?

<div id="app"><button v-on:click="click">click me</button>
</div>
...
var app = new Vue({el: '#app',methods: {click(event) {console.log(typeof event);    // object}}
});

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

简单总结其用法:

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

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

乌龙

类似下面的代码:

<div id="app"><button v-on:click="click(233)">click me</button>
</div>
...
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 对象上有这样一个属性:

window.event

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

vue-js 特殊变量$event常识相关推荐

  1. Vue.js:按键修饰符keyup,keyup.enter,keyup.alt.enter的使用

    学习Vue.js第三天 键盘事件keyup <label>你所在城市:</label><input type="text" v-on:keyup=&q ...

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

    背景 如果我们要阻止默认事件,在 chrome 等浏览器中,我们可能要写一个: event.preventDefault(); 而在 IE 中,我们则需要写: event.returnValue = ...

  3. vue.js:590 [Vue tip]: Event “removeitem“ is emitted in component <TodoItems> but the handler is regi

    报错信息 vue.js:590 [Vue tip]: Event "removeitem" is emitted in component <TodoItems> bu ...

  4. js声明php变量,vue.js怎样声明变量

    vue.js声明变量的方法:1.使用let定义,let是块级作用域,函数内部使用let定义后,对函数外部无影响:2.使用var定义,var定义的变量可以修改:3.使用const定义,const定义的变 ...

  5. js去掉前后空格的函数_2020年最火爆的Vue.js面试题

    2020年Vue面试题 Interview ●●●● 作者:@烦恼会解决烦恼 vue核心知识--理论篇 1.对于Vue是一套渐进式框架的理解 渐进式代表的含义是:主张最少. Vue可能有些方面是不如R ...

  6. 【说人话】真正意义上讲清楚了如何用$emit()在Vue.js的自定义组件中实现v-model=“”双向绑定

    子组件sg-component.vue代码 <template><div class="sg-component"><button @click=&q ...

  7. vue.js快速入门

    以前看到多少天学习系列,我都深感烦躁,短短几天怎么可以精通,那是对于他们而言.但是,今天我要写一个快速入门,本人觉得还是有一点用处,因为,我不可能在一天之内精通某种东西,却可以在一两小时入门. 回到v ...

  8. Vue.js 学习笔记 第5章 内置指令

    本篇目录: 5.1 基本指令 5.2 条件渲染指令 5.3 列表渲染指令 v-for 5.4 方法与事件 5.5 实战:利用计算属性.指令等知识开发购物车 回顾一下第2.2节,我们己经介绍过指令(Di ...

  9. Vue.js 2.x render 渲染函数 JSX

    Vue.js 2.x render 渲染函数 & JSX Vue绝大多数情况下使用template创建 HTML.但是比如一些重复性比较高的场景,需要运用 JavaScript 的完全编程能力 ...

  10. Vue.js教程学习笔记

    官方视频简易教程:https://learning.dcloud.io/ 1. 安装与部署 第一阶段(初学)可以通过在html文件中引入脚本来完成安装 <script src="vue ...

最新文章

  1. openchain 环境部署
  2. .NET Excel 2003 批量插入数据很慢的解决办法
  3. Java设计模式-建造者模式 理论代码相结合
  4. Python闭包与装饰器
  5. React开发(161):onref绑定
  6. VMware下Mac系统自适应屏幕
  7. 微博中的长链接与短链接
  8. php soapfault 怎么用,SoapFault出现的问题及解决办法分享
  9. 单片机p1口亮灯实验c语言代码,手把手教你单片机流水灯实验(详解)
  10. 计算机蓝牙快捷键,电脑蓝牙在哪里开?蓝牙快捷方式介绍
  11. webapp封装 苹果app证书
  12. 自兴人工智能学院有话说,好机构培养好人才!
  13. 亚马逊运营面试经验分享:避免踩坑,少走弯路
  14. 2020年终总结万粉小成就福利来了
  15. BIM模型文件下载——某幼儿园设计方案Revit模型
  16. MAC地址中的“O”和“0”怎么区别?命令行黑窗口界面的“O”和“0”怎么区别?
  17. 为什么 128 KB 的魂斗罗可以实现那么长的剧情 ?
  18. @DateTimeFormat@JsonFormat注解详解
  19. 【arcgis符号库使用教程】
  20. 这5个免费素材网站,设计师都在用

热门文章

  1. [css] 请使用css画一个圆,方法可以多种
  2. [css] 用css画出一把刻度尺
  3. [vue-cli]在使用vue-cli开发vue项目时,自动刷新页面的原理你了解吗?
  4. 工作113:声明问题 的定义变量
  5. 工作54:对ref的理解
  6. 前端学习(2165):vuecli3创建项目和目录结构
  7. 前端学习(2148):webpack之图片的处理
  8. 前端学习(1812):前端调试之shadow
  9. 前端学习(627):数据类型
  10. java学习(144):file常用方法1