当前位置: 首页 > news >正文

【第六节】方法与事件处理器

方法与事件处理器

方法处理器

可以用 v-on 指令监听 DOM 事件:

<div id="example">
<button v-on:click="greet">Greet</button></div>

绑定一个单击事件处理器到一个方法 greet 。下面在 Vue 实例中定义这个方法

var vm=new Vue({el:'#example',data:{
name:'Vue.js'
//在'methods’对象中定义方法
methods:{greet:function(event)(//方法内'this”指向 
vmalert('Hello+ this.name +'!')
//“event'是原生DOM事件
alert(event.target.tagName)
//也可以在 JavaScript 代码中调用方法
vm.greet()
//'Hello Vue.js!

在这里插入图片描述

内联语句处理器

除了直接绑定到一个方法,也可以用内联 JavaScript 语句:(方法传参)

<div id="example-2">
<button v-on:click="say('hi')">Say Hi</button><button v-on:click="say('what')">Say What</button></div>
new Vue( {el:'#example-2',methods:{say:function(msg){alert(msg)}}})

在这里插入图片描述

类似于内联表达式,事件处理器限制为一个语句。有时也需要在内联语句处理器中访问原生 DOM 事件。可以用特殊变量Sevent 把它传入方法:
HTML

<button v-on:click="say('hello!'$event)">Submit</button>
methods:{
say:function(msg,event){
//现在可以访问原生事件对象event.preventDefault()
}
}

在这里插入图片描述

  • event.stopPropagation()
    不再派发事件。
    终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点。
    语法
event.stopPropagation()

说明
该方法将停止事件的传播,阻止它被分派到其他Document 节点。在事件传播的任何阶段都可以调用它。注意,虽然该方法不能阻止同一个 Document 节点上的其他事件句柄被调用,但是它可以阻止把事件分派到其他节点。

  • preventDefalt()方法

取消事件的默认动作。
语法

event.preventDefault()

说明
该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。例如,如果 type 属性是"submit",在事件传播的任意阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。注意,如果vent 对象的 cancelable 属性是fasle,那么就没有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用。

JS事件捕获与事件冒泡

avaScript 事件分为三个阶段:

  • 捕获阶段:事件从父元素开始向目标元素传播,从 Window 对象开始传播。
  • 目标阶段:该事件到达目标元素或开始该事件的元素。
  • 冒泡阶段:这时与捕获阶段相反,事件向父元素传播,直到 Window 对象。
    在这里插入图片描述
    参考博客

事件修饰符

在事件处理器中经常需要调用 event.preventDefault()或 event.stopPropagation()。尽管我们在方法内可以轻松做到,不过让方法是纯粹的数据逻辑而不处理 DOM 事件细节会更好。
为了解决这个问题,Vue.js为v-on 提供两个事件修饰符:.prevent与 .stop 。

<!--阻止单击事件冒泡-->
<a v-on:click.stop="doThis"></a>
<!--提交事件不再重载页面-->
sform v-on:submit.prevent="onSubmit"></form>
s修饰符可以串联--
<a v-on:click.stop.prevent="doThat">
<!--只有修饰符-->
<form von:submit.prevent></form>

1.0.16 添加了两个额外的修饰符

<!--添加事件侦听器时使用capture模式--><div v-on:click.capture "doThis">...</div>

按键修饰符

在监听键盘事件时,我们经常需要检测 keyCode。Vue.js允许为 v-on 添加按键修饰符
HTML

<!--只有在keyCode是13时调用vm.submit()--><input v-on:keyup.13="submit">

记住所有的 keyCode 比较困难,Vue.js 为最常用的按键提供别名:
HTML

<!--同上-->
<input v-on:keyup.enter="submit">
<!--缩写语法 --><input @keyup.enter="submit">

在这里插入图片描述

key列表
key对应
在这里插入图片描述

为什么在html中监听事件

这种事件监听的方式违背了传统理念“separation ofconcern”。不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel上,它不会导致任何维护困难。实际上,使用v-on有几个好处:
1.扫一眼 HTML 模板便能轻松定位在 JavaScript 代码里对应的方法。
2.无须在 JavaScript 里手动绑定事件, ViewModel代码可以是非常纯粹的逻辑,和 DOM 完全解耦,更易于测试。
3.当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。无须担心如何自己清理它们。

http://www.dtcms.com/a/300519.html

相关文章:

  • 【计算机网络架构】网状型架构简介
  • C++ 多线程(一)
  • 详解力扣高频SQL50题之610. 判断三角形【简单】
  • Vscode的常用快捷键(摆脱鼠标计划)
  • [N1盒子] 斐讯盒子N1 T1通用刷机包(可救砖)
  • 金字塔降低采样
  • C语言:顺序表(上)
  • K8S 九 安全认证 TLS
  • 关于西门子博图基本指令的应用区别
  • VScode 支持 QNX 源码跳转
  • 【Python系列】从内存分析到性能剖析
  • Mysql 二进制安装常见问题
  • 2025年Solar应急响应公益月赛-7月wp
  • mac neo4j install verifcation
  • 论文阅读-IGEV
  • SecureCRT连接密钥交换失败
  • 基于LNMP架构的分布式个人博客搭建
  • 总结和对比Unity中的三种主要抗锯齿技术:FXAA、SMAA和TAA
  • 搭建DM数据守护集群
  • Java 代理机制详解:从静态代理到动态代理,彻底掌握代理模式的原理与实战
  • 【服务器与部署 30】Python内存优化实战:从内存泄漏到性能提升的完整解决方案
  • VLA-视觉语言动作模型
  • mac配置多版本jdk
  • 四、搭建springCloudAlibaba2021.1版本分布式微服务-加入openFeign远程调用和sentinel流量控制
  • git stash 命令详解
  • Python 程序设计讲义(24):循环结构——循环后处理 while ... as 与 for...as
  • 大模型算法面试笔记——常用优化器SGD,Momentum,Adagrad,RMSProp,Adam
  • 算法思维进阶 力扣 300.最长递增子序列 暴力搜索 记忆化搜索 DFS 动态规划 C++详细算法解析 每日一题
  • 用KNN实现手写数字识别:基于 OpenCV 和 scikit-learn 的实战教学 (超级超级超级简单)
  • Torchv Unstrustured 文档解析库