事件处理
js中button按钮点击触发函数写法:
<button onclick="函数名()">xxx</button>
Vue中button按钮点击触发函数写法:
<button v-on:click="函数名">xxx</button>
也可以简写为:
<button @click="函数名">xxx</button>
tip: js写法的函数名后面是有括号的,有无参数都写括号;而vue中无参数可以不写括号(默认会传一个事件对象$event),如果有一个参数以上,则要把参数写入括号,如果要用到事件对象,必须自己在括号的参数中写上 $event,
html标签中
标签中方法参数
$event 可以接收事件对象,js方法中参数event就是前面的$event
vue中方法的js代码:
注:Vue中的methods:{ 这里面的函数不要写箭头函数 }
methods中的方法的this都是指向Vue实例对象,或组件实例对象
事件修饰符
@click.prevent
@click.prevent="函数名" 中.prevent 可以阻止默认事件,如a标签的超链接跳转
.prevent在js中的写法是在函数中 event.preventDefault()
@click.stop
@click.stop="函数名" 可以阻止事件冒泡,如多层嵌套的相同点击事件
.stop 在js 中写法: event.stopPropagation()
@click.once
@click.once="函数名" 让函数只执行一次,再次点击后都不会执行了
js 点击一个多层的div会 先捕获,再冒泡,执行点击函数,所以从最外层捕获到最内层 ,再由最内层冒泡到最外层。
@click.capture
如果在外层加@click.capture 会最先冒泡
<!-- 默认情况 -->
<div class="demo1" @click="capture1"><!-- 先捕获 最后冒泡-->
<div class="demo2" @click="capture2"><!-- 再捕获 再冒泡-->
<button @click="capture3">捕获冒泡</button><!-- 最后捕获 先冒泡-->
</div>
</div>
<!-- 加了.capture -->
<div class="demo1" @click.capture="capture1"><!-- 最先冒泡-->
<div class="demo2" @click.capture="capture2"><!-- 最后冒泡-->
<button @click="capture3">捕获冒泡</button><!-- 第二冒泡-->
</div>
</div>
.stop.prevent等等修饰符都可以连着写。
键盘事件(@keyup、@keydown)
input标签中 @keyup="函数名" 键盘按钮按下弹起后触发事件,@keydown 则是按下触发。
如果是@keyup.enter 则是按回车弹起才触发事件
还有
-
.delete(包含退格键和delete键)
-
.esc .up .down .left .right
-
.space空格
Tab按键的使用要用 @keydown.tab才有效 (如果是@keyup则会跳到输入框外,失去了输入框的焦点;同样要使用keydown的 还有 ctrl shift alt meta(windows的win键、苹果中的command))(所以这些都不能用keyup)
还可以 @keyup/@keydown.ctrl.y ="函数名" 连着按ctrl和y两个按键才能触发,因为@keyup/@keydown.ctrl="函数名"只按ctrl是无效的
自定义键名(了解)
Vue.config.keyCodes.xxx = ASCIl码
@keydown/@keyup.xxx = "函数名"
这样就可以使用ASCII码对应的按键的别名