表单修饰符
.lazy
默认情况下 v-model默认是在input事件中同步输入框的数据的
lazy可以让数据在失去焦点或者回车时才会更新
<!-- 在“change”时而非“input”时更新 -->
<input type="text" name="" v-model.lazy="text">{{text}}
.number
默认情况下 在输入框中无论我们输入的是字母还是数字,都会被当做数字处理。number可以让输入框中输入的内容自动转成数字类型
<input type="number" name="" v-model.number="number">{{typeof number}}
.trim
去除输入内容的 首尾的空格
// console.log(vm.trim) 查看效果
<input type="text" name="" v-model.trim="trim">{{trim}}
事件修饰符
.stop
阻止了事件冒泡,相当于调用了event.stopPropagation方法
<div @click="console.log(2)">
<button @click.stop="console.log(1)">ok</button>
</div>
//只输出1
.prevent
阻止了事件的默认行为,相当于调用了event.preventDefault方法
<form v-on:submit.prevent="onSubmit"></form>
.self
将事件绑定在自身身上,相当于阻止事件冒泡
只当在 event.target 是当前元素自身时触发处理函数
<div @click.self="">
<div @click=""></div>
</div>
.once
绑定了事件以后只能触发一次,第二次就不会触发
<button @click.once=""></button>
.capture
使事件触发从包含这个元素的顶层开始往下触发
<div @click.capture="console.log(1)">div1
<div @click.capture="console.log(2)">div2
<div @click="console.log(3)">div3
<div @click="console.log(4)">div4</div>
</div>
</div>
</div>
// 输出: 1 2 4 3
.passive
在移动端,当我们在监听元素滚动事件的时候,会一直触发onscroll事件会让我们的网页变卡,因此我们使用这个修饰符的时候,相当于给onscroll事件整了一个.lazy修饰符
<!-- 滚动事件的默认行为 (即滚动行为) 将会立即触发 -->
<!-- 而不会等待 `onScroll` 完成 -->
<!-- 这其中包含 `event.preventDefault()` 的情况 -->
<div v-on:scroll.passive="onScroll">...</div>
不要把 .passive 和 .prevent 一起使用,因为 .prevent 将会被忽略,同时浏览器可能会向你展示一个警告。
passive 会告诉浏览器你不想阻止事件的默认行为
.native
让组件变成像html内置标签那样监听根元素的原生事件,否则组件上使用 v-on 只会监听自定义事件
<my-component @:click.native=""></my-component>
鼠标按钮修饰符
- left 左键点击
- right 右键点击
- middle 中键点击
<button @click.left="console.log('左键点击')">ok</button>
键盘修饰符
- 普通键(enter、tab、delete、space、esc、up…)
- 系统修饰键(ctrl、alt、meta、shift…)
<input type="text" @keyup.enter="shout()">
自定义一些全局的键盘码别名
Vue.config.keyCodes.f2 = 113
v-bind修饰符
async
对props进行一个双向绑定
//父组件
<comp :myMessage.sync="bar"></comp>
//子组件
this.$emit('update:myMessage',params);
相当于以下的简写
//父亲组件
<comp :myMessage="bar" @update:myMessage="func"></comp>
func(e){
this.bar = e;
}
//子组件js
func2(){
this.$emit('update:myMessage',params);
}
注意
- 使用sync的时候,子组件传递的事件名格式必须为update:value,其中value必须与子组件中props中声明的名称完全一致
- 注意带有 .sync 修饰符的 v-bind 不能和表达式一起使用
- 将 v-bind.sync 用在一个字面量的对象上,例如 v-bind.sync=”{ title: doc.title }”,是无法正常工作的
prop
设置自定义标签属性,避免暴露数据,防止污染HTML结构
<input title="title" value="" :index.prop="index">
camel
将命名变为驼峰命名法,如将view-Box属性名转换为 viewBox
<svg :viewBox="viewBox"></svg>