vue 修饰符 表单修饰符 .lazy .number .trim 事件修饰符

表单修饰符

文档

.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>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值