概念
在vue中,修饰符将各种dom事件的细节进行封装,使我们在vue开发中更便捷。常见的有表单类的修饰符、事件类的修饰符等
表单修饰符
- .lazy - input框的v-model每次在input事件改变后更新数据,使用lazy可以在每次change时候刷新数据
- .trim - input文本自动去除前后空格
- .number - input文本转换成数值类型
html
<input type="text" v-model.number="age"/>
<input type="text" v-model.trim="searchText"/>
事件修饰符
- .stop:防止事件冒泡,和js的event.stopPropagation() 效果一致
- .prevent :防止默认的行为,和js的 event.preventDefault() 效果一致(如果事件可取消,则取消该事件,而不停止事件的进一步传播)
- .capture - 与事件冒泡的方向相反,事件捕获由外到内
- .self - 只会触发自己范围内的事件,不包含子元素。即event.target本身
- .once - 只会触发一次
- .passive - 在移动端监听页面滚动事件的时候,会一直触发onscroll事件导致网页变卡,加上了passive相当于给onscroll使用了lazy懒加载
- .native - 让组件变成像html内置标签那样,可以监听元素的原生事件
html
<el-card @click.native="handleClick"></el-card>
<div @click.stop="edit()"></div>
鼠标按钮修饰符
针对鼠标的按键,只有3个。
- .left - 左键点击
- .right - 右键点击
- .middle - 中间键点击
html
<div @click.left="add()"></div>
键盘按键修饰符
主要是用来修饰键盘事件onkeyup、onkeydown的。
- .keyCode - keyCode包含的按键,包含(enter、tab、delete、space、esc、up、ctrl、alt、meta、shift...)
html
// 只有按键为keyCode的时候才触发
<input type="text" @keyup.keyCode="send()">
v-bind属性修饰符
- .sync - 对props进行双向绑定,简化了子组件修改父组件参数的方法
- .prop - 设置自定义的属性,避免暴露数据,污染html结构
html
// 父组件
<comp :dialogVisible.sync="dgVisible"></comp>
// 子组件直接修改父组件的属性
this.$emit('update:dialogVisible', false);
// 自定义属性index
<input value="10" :index.prop="index">