上节回顾

上节写了一个v-fortable的简单互动,脑子里回忆一下,嗯 ~ 还是回去再看一遍吧...

本节目标

今天看一下事件与修饰符,并且把有疑惑的地方敲一遍,亲眼看一下输出结果。由于时间有限,今天只写了prevent stop capture exact once这五个修饰符。

事件

事件就不多说了,v-on: 简写 @

修饰符

prevent - 阻止表单提交

<form @submit.prevent><input type="email" placeholder="Email"><button type="submit" class="btn btn-default btn-sm" >submit</button>
</form><form><input type="email" placeholder="Email"><button type="submit" class="btn btn-default  btn-sm" >submit</button>
</form>

tip:prevent修饰符与form标签一起使用

stop - 阻止事件向“上”传播

<div @keydown.enter="doSomeThing(1)"><div @keydown.enter.stop="doSomeThing(2)"><input type="text" @keydown.enter="doSomeThing(3)"></div>
</div><div @keydown.enter="doSomeThing(1)"><div @keydown.enter="doSomeThing(2)"><input type="text" @keydown.enter="doSomeThing(3)"></div>
</div>

tip:对于嵌套的元素,元素同时有的事件会向外进行扩散

capture - 改变事件传播顺序

<div @keydown.enter.capture="doSomeThing(1)"><div @keydown.enter.capture="doSomeThing(2)"><input type="text" @keydown.enter="doSomeThing(3)"></div>
</div>

tip:catpture会在向上传递时享有优先执行权,当存在多个capture时,更外层的优先权更高

once - 一次性触发

<input type="text" @keydown.enter.once="doSomeThing('我使用了.once')">

tip:触发过一次后不可用,当然前提是不刷新

exact - 取该修饰符之前所有事件和修饰符的与关系

<input type="text" placeholder="按下的键中包括Enter键" @keydown.enter="doSomeThing('我被触发了')">
<input type="text" placeholder="按下ctrl+enter键触发Alert" @keydown.ctrl.enter.exact="doSomeThing('我被触发了')">
<input type="text" placeholder="单单按下enter键触发Alert" @keydown.enter.exact="doSomeThing('我被触发了')">
<input type="text" placeholder="想睡想睡想睡" @click.ctrl.exact="doSomeThing('想睡觉')">

tip:exact修饰符常与系统修饰符和按键修饰符配合使用

完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"><title>chapter - 7</title>
</head>
<body>
<div id="app"><h3>打开F12  --> Console  页,观察输出结果</h3><h4>$event</h4><input type="text"  v-model="msg" @keydown.enter="doClick(msg, $event)" placeholder="光标放在此处按下回车键"><button class="btn btn-default  btn-sm" @click="doClick(msg, $event)">点 - 我</button><h4>prevent修饰符 - 阻止窗体提交</h4><form @submit.prevent><input type="email" placeholder="Email"><button type="submit" class="btn btn-default btn-sm" >submit</button></form><h4>没有阻止窗体提交</h4><form><input type="email" placeholder="Email"><button type="submit" class="btn btn-default  btn-sm" >submit</button></form><h4>stop修饰符 - 阻止事件向“上”传播</h4>
<div @keydown.enter="doSomeThing(1)"><div @keydown.enter.stop="doSomeThing(2)"><input type="text" @keydown.enter="doSomeThing(3)"></div>
</div><h4>没有阻止事件向“上”传播</h4><div @keydown.enter="doSomeThing(1)"><div @keydown.enter="doSomeThing(2)"><input type="text" @keydown.enter="doSomeThing(3)"></div></div><h4>capture修饰符 - 改变事件传播顺序</h4><div @keydown.enter.capture="doSomeThing(1)"><div @keydown.enter.capture="doSomeThing(2)"><input type="text" @keydown.enter="doSomeThing(3)"></div></div>
<p>结论:capture会在向上传递时享有有限级,存在多个captrue时,外层优先级高于内层</p><h4>once修饰符 - 一次性触发</h4><input type="text" @keydown.enter.once="doSomeThing('我使用了.once')"><h4>self修饰符 - 只有自身“主动被触发”才执行,“传播”而来的不触发</h4><div @click.self="doSomeThing('我是“外层div”,我被触发了')" style="background-color: cornflowerblue; width: 300px; height: 28px;"><div @click="doSomeThing('我是“中间div”,我被触发了')" style="background-color: deeppink; width: 200px; height: 28px;"><div @click.self="doSomeThing('我是“内层”input,我被触发了')" style="background-color: lightgreen; width: 100px; height: 28px;"></div></div></div><h4>系统修饰符与按键修饰符与exact修饰符</h4><input type="text" placeholder="按下的键中包括Enter键" @keydown.enter="doSomeThing('我被触发了')"><input type="text" placeholder="按下ctrl+enter键触发Alert" @keydown.ctrl.enter.exact="doSomeThing('我被触发了')"><input type="text" placeholder="单单按下enter键触发Alert" @keydown.enter.exact="doSomeThing('我被触发了')"><input type="text" placeholder="想睡想睡想睡" @click.ctrl.exact="doSomeThing('想睡觉')">
</div><script>const data = {msg: ''}const methods = {doClick (msg, event) {console.log('-->start')console.log('type : '+event.type)console.log('target : '+event.target)console.log('button : '+event.button )console.log('tip : button 在 firefox 中 0 代表左键')console.log('-->end')},onSubmit () {alert('为什么总觉得自己该做点什么?')},doSomeThing (msg) {alert(msg)}}var vm = new Vue({el: '#app',data: data,methods:methods})
</script>
</body>
</html>

小节

困,累,小节跳过...

我的 Vue.js 学习日记 (七) - 事件与修饰符相关推荐

  1. Vue.js学习系列七——Vue服务器渲染Nuxt学习

    我又回来啦~这次我们来学习Vue的服务器渲染SSR. 关于SSR的文章网上很多,一开始看得我云里雾里.然后去Vue.js 服务器渲染指南和nuxt官网看了看,发现文章大多都是搬运官网的内容,真正讲的清 ...

  2. Vue.js 学习笔记 七 控制样式

    Vue.js可以灵活的控制样式 我们首先随便写2个样式 <style>.divCss {background-color: green;width:400px;height:400px;} ...

  3. Vue.js学习日记03

    Vue.js样式绑定 Vue.js class class 与 style 是 HTML 元素的属性,用于设置元素的样式 class 属性绑定 为 v-bind:class 设置一个对象,从而动态的切 ...

  4. Vue.js 学习笔记 八 v-for

    v-for指令,是用来循环的,常用的情况有以下4种 <div id="divApp"><!--迭代数字--><p v-for="n in 5 ...

  5. Vue.js 学习笔记 十 自定义按键事件

    <div id="divApp"><!--任何键盘动作都会触发--><input type="text" v-on:keyup=& ...

  6. Vue.js 学习笔记 五 常用的事件修饰符

    介绍几个常用的事件修饰符 直接上代码 <div id="divApp"><div class="divColor" v-on:click=&q ...

  7. Vue.js 学习笔记 十一 自定义指令

    之前看到过v-bind,v-on等指令,Vue还可以自定义指<div id="divApp"        <div v-focus></div> & ...

  8. Vue.js 学习笔记 九 v-if和v-show

    <p v-if="flag">v-if</p><p v-show="flag">v-show</p> flag是 ...

  9. Vue.js 学习笔记 六 v-model 双向绑定数据

    之前说的v-bind指令,可以绑定数据,但是是单向的,从model向view绑定,下面介绍v-model,可以双向绑定数据 <div id="divApp"><p ...

最新文章

  1. 别人家的公司的 1024 程序员节 ! 羡慕了!
  2. SAP 启用了HUM和QM的前提下,无法对采购订单的收货在质量放行前执行部分退货!
  3. linux 文件目录
  4. java定时增量同步,一种可配置的定时数据同步方法与流程
  5. python爬虫怎么挣钱_python爬虫19 | 爬虫遇到需要的登录的网站怎么办?用这3招轻松搞定!...
  6. “高仿版拼多多”宣告破产!曾一年收割1.3亿用户,如今自救失败负债16亿
  7. Java如何解决乱码问题
  8. 王道操作系统考研笔记——1.1.6 系统调用
  9. effective C++ 读后笔记
  10. 行为设计模式 - 迭代器设计模式
  11. 设计干货|菜单 - 导航UI移动版模板
  12. appium python 抓包_Python学习教程:另辟蹊径,appium抓取app应用数据了解一下
  13. 找出一个字符串中的数字
  14. 新生报到小程序,微信小程序新生入学,微信小程序新生报到系统毕业设计作品
  15. css white-space属性总结
  16. 关于EVAL()函数(一)
  17. Android - 一个似神器而非神器之Palette探索与实践
  18. 每周分享第 10 期
  19. NYOJ82-迷宫寻宝(一)
  20. 柔性传感器产业化将至或将成为折叠屏背后的“黑科技”

热门文章

  1. gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_TCP/IP协议知识总结...
  2. gunicorn多进程不死_WEB,gunicorn - 无论是多进程、多线程、协程模式,同一个浏览器窗口多个标签页访问同一个url,看上去不会并发的问题...
  3. from .filename import class
  4. 自编码器参数是否需要相称呢
  5. mongodb连接失败_MongoDB 基础入门
  6. 关于c语言中合法的数值常量
  7. 花生问题——百练OJ:2950:摘花生与1928:The Peanuts
  8. 【湖南】2021年下半年软考报考时间及通知
  9. myeclipse优化
  10. 了解零信任-SDP关系