vue------修饰符总结之事件修饰符、按键修饰符、系统修饰符、按键码~

事件修饰符:(使用修饰符时,顺序很重要;相应类型的代码会顺序产生

事件修饰符:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。

为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符。之前提过,修饰符是由点开头的指令后缀来表示的。
.stop      <!--阻止单击事件继续传播,即只会作用在对元素上面,阻止冒泡事件的发生,更不会有捕获了-->
.prevent   <!--提交事件不再重载页面,它的作用时阻止dom的默认事件 -->
.capture    <!-- 在捕获状态下处理事件,一般放在父元素上,来处理子元素的事件-->
.self       <!-- 只当在 event.target 是当前元素自身时触发处理函数 ,事件不是从内部元素触发的-->
.once       <!-- 点击事件将只会触发一次 -->
.passive    <!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发, 而不会等待 `onScroll` 完成  -->


<!-- 阻止单击事件继续传播 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面,阻止默认行为 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>

<!-- 添加事件监听器时使用事件捕获模式 -->
<!-- 即内部元素触发的事件先在此处理,然后才交由内部元素进行处理 -->
<div v-on:click.capture="doThis">...</div>

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>

<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成  -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>
这个 .passive 修饰符尤其能够提升移动端的性能。


注意事项:
不要把 .passive 和 .prevent 一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你
展示一个警告。请记住,.passive 会告诉浏览器你不想阻止事件的默认行为。

按键修饰符

1. <!-- 只有在 `key` 是 `Enter` 时调用 `vm.submit()` -->
<input v-on:keyup.enter="submit">

2. 可以直接将 KeyboardEvent.key 暴露的任意(有效按键名)转换为 kebab-case 来作为修饰符
<input v-on:keyup.page-down="onPageDown">
<input v-on:keyup.page-up="onPageDown">
处理函数只会在 $event.key 等于 PageDown或 PageUp 时被调用

3.可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。
.ctrl
.alt
.shift
.meta
注意:注意:在 Mac 系统键盘上,meta 对应 command 键 (⌘)。在 Windows 系统键盘 meta 对应 Windows 徽标键 (⊞)。在 Sun 操作系统键盘上,meta 对应实心宝石键 (◆)。在其他特定键盘上,尤其在 MIT 和 Lisp 机器的键盘、以及其后继产品,比如 Knight 键盘、space-cadet 键盘,meta 被标记为“META”。在 Symbolics 键盘上,meta 被标记为“META”或者“Meta”。

例如:

<!-- Alt + C -->
<input @keyup.alt.67="clear">

<!-- Ctrl + Click -->
<div @click.ctrl="doSomething">Do something</div>


4. .exact 修饰符
作用: 修饰符允许你控制由精确的系统修饰符组合触发的事件
<!-- 有且只有 Ctrl 被按下的时候才触发 -->
<button @click.ctrl.exact="onCtrlClick">A</button>

<!-- 没有任何系统修饰符被按下的时候才触发 -->
<button @click.exact="onClick">A</button>


5.鼠标按键修饰符
.left
.right
.middle
这些修饰符会限制处理函数仅响应特定的鼠标按钮。

为什么在HTML中绑定事件

你可能注意到这种事件监听的方式违背了关注点分离 (separation of concern) 这个长期以来的优良传统。但不必担心,因为所有的 Vue.js 事件处理方法和表达式都严格绑定在当前视图的 ViewModel 上,它不会导致任何维护上的困难。


但是使用v-on 或 @ 来绑定事件的好处有:
1.在html中一眼就可以看到对应事件的方法名,便于找到js中方法代码块
2.无须在 JavaScript 里手动绑定事件,你的 ViewModel 代码可以是非常纯粹的逻辑,和 DOM 完全解耦,更易于测试。
3.当一个 ViewModel 被销毁时,所有的事件处理器都会自动被删除。你无须担心如何清理它们。
发布了163 篇原创文章 · 获赞 31 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/COCOLI_BK/article/details/103578944