vue 常用修饰符

124 阅读1分钟

一、事件修饰符

<script>
export default {
  methods: {
    outer () {
      console.log("outer");
    },
    middle () {
      console.log("middle");
    },
    inner () {
      console.log("inner");
    },
  },
}
</script>

.capture:与事件冒泡方向相反,事件捕获由外到内。点击子节点,就会触发从外至内即父节点-》子节点的点击事件

<div @click.capture="outer">
  <div @click.capture="middle">
    <button @click.capture="inner">点击</button>
  </div>
</div>

image.png

.stop:阻止点击事件冒泡,点击子节点不会捕获到父节点的事件

<div class="outeer" @click.stop="outer">
  <div class="middle" @click.stop="middle">
    <button @click.stop="inner">点击</button>
  </div>
</div>

image.png

.self:只有自己触发的才会执行,会忽略掉内部的冒泡事件传递出来的信号

<div @click.self="outer">
  <div @click.self="middle">
    <button @click.self="inner">点击</button>
  </div>
</div>

image.png

stop与self的区别:

stop:自身开始不向外部传递冒泡信号

self:只响应当前元素自身触发的事件,不响应冒泡触发的事件,且会向外部传递冒泡信号。

.once:只有自己触发的才会执行,会忽略掉内部的冒泡事件传递出来的信号

<button @click.once="inner">点击</button>

.prevent:阻止预设行为,等同于js的event.preventDefault()

<a @click.prevent="handleSomething"></a>

.passive:执行默认方法。每次事件产生,浏览器都会查询是否有preventDefault阻止该次事件的默认动作。加上passive是为了告诉浏览器不用查询,直接执行。(passive能够提升移动端的性能,一般用在滚动监听,@scoll,@touchmove )

<div @scoll.passive="quickScroll"></div>

prevent和passive一起使用,prevent会被忽略。

二、v-model修饰符

.lazy:使用前输入框改变值更新,使用后值会在光标离开input框后才更新

<input type="text" v-model.lazy="inputValue">

.number:将输出字符串转为Number类型。(虽然type类型定义的是Number类型,但如果输入字符串,输出的是String)

<input type="text" v-model.number="inputValue">

.trim:自动过滤用户输入的首尾空格

<input type="text" v-model.trim="inputValue">

三、键盘修饰符

.enter:监听回车键

<input type="text" v-model="inputValue" @keyup.enter="enterkeyup" >

.tab:制表键

.delete:含delete和backspace键

.esc:返回键

.space: 空格键

.up:向上键

.down:向下键

.left:向左键

.right:向右键