vue 事件缩写及修饰符

一 . 缩写

v- 前缀作为一种视觉提示,用来识别模板中 Vue 特定的 attribute。当你在使用 Vue.js 为现有标签添加动态行为 (dynamic behavior) 时,v- 前缀很有帮助,然而,对于一些频繁用到的指令来说,就会感到使用繁琐。同时,在构建由 Vue 管理所有模板的单页面应用程序 (SPA - single page application) 时,v- 前缀也变得没那么重要了。因此,Vue 为 v-bind 和 v-on 这两个最常用的指令,提供了特定简写:

v-bind 缩写 – (动态赋值)

<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a :[key]="url"> ... </a>

v-on 缩写 – (常用事件绑定,例如:click)

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

<!-- 动态参数的缩写 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>

二 修饰符

1 事件修饰符

事件修饰符 (modifier) 是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。

.stop

阻止冒泡

当多对标签进行重叠的时候, 你点击最上面的一层标签的时候, 会自动的冒泡到他下面的所有标签上面
而.stop就是阻止冒泡使用的

.prevent

阻止默认事件

在form表单提交时候或者在点击a标签的时候, 会阻止提交或跳转

.self

只当事件在该元素本身(比如不是子元素)触发时触发回调

这个修饰符跟.stop目的差不多,
.stop 是阻止点击到自己身上的点击事件冒泡到其它标签上
.self 是除非你直接点击到我标签本身, 不接受其它标签上面的点击事件冒泡到我身上的事件

.once

事件只触发一次

绑定后只会触发一次

下面为代码演示, 主要功能就是有一个遮罩层,

.keyup

<input v-on:keyup.enter="submit">
<input v-on:keyup.13="submit">

.native

<base-input v-on:focus.native="onFocus"></base-input>

将组件看待成一个html标签;

为了在必要的情况下支持旧浏览器,Vue 提供了绝大多数常用的按键码的别名:

.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right
有一些按键 (.esc 以及所有的方向键) 在 IE9 中有不同的 key 值, 如果你想支持 IE9,这些内置的别名应该是首选。

处理函数只会在 $event.key 等于 PageDown 时被调用。

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
     <!-- 导入本地的vue     -->
    <script src="/VUE/vue.js"></script>
</head>
<body>
    
    <div id="box">
        <!-- 修饰符 .prevent 会阻止默认行为,比如跳转 -->
        <br> <a href="http://www.baidu.com" @click.prevent>点击后不会跳转</a>
        <br><hr>
        <!-- 修饰符 .once 被绑定的事件只触发一次 -->
        <button @click.once="onceFunc"> 你只能点击一次 </button>
        <br><hr>
        <!-- 点击按钮后吧isShow的状态置位true -->
        <button @click="isShow=true">点击显示遮罩层</button>
        <!-- 这个div标签就是出现的遮罩层 -->
        <div id="overlay" v-show="isShow" @click="isShow=false">
             <!-- 这个div标签是在遮罩层上面显示的,当点击这个标签会冒泡到他下面的div
            这个时候就要使用 .shop 阻止冒泡行为 -->
            <div id="center" @click.stop>
                点击灰色部分会关闭遮罩层, <br>而点击白色部分这不会
                <hr>
                <div>用户名: <input type="text"></div>
            </div>
        </div>
    </div>
    <script>
        var vm = new Vue({
            el:"#box",
            data:{
                isShow:false,
            },
            methods:{
                onceFunc(){
                    
                }
            }
        })
    </script>
    
</body>
</html>

2 v-model 修饰符

.lazy

在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转为在 change 事件_之后_进行同步:

<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg">

.number

如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:

<input v-model.number="age" type="number">

这通常很有用,因为即使在 type=“number” 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。

.trim

如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:

<input v-model.trim="msg">
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值