美文网首页
Vue事件修饰符详解

Vue事件修饰符详解

作者: 彩云_789d | 来源:发表于2020-09-11 18:13 被阅读0次

Vue事件修饰符详解(转)

整体学习Vue时看到Vue文档中有事件修饰符的描述,但是看了之后并没有理解是什么意思,于是查阅了资料,现在记录下来与大家分享

先给大家画一个示意图理解一下冒泡和捕获

(1) .stop修饰符#

请看如下代码

Copy

<template>

  <div class="about">

    <div @click="test1">

      <div @click="test2">

        测试

      </div>

    </div>

  </div>

</template>

<script>

export default {

  methods:{

    test1(){

      console.log('test1')

    },

    test2(){

      console.log('test2')

    }

  }

}

</script>

由以上代码可以看到我们有一个嵌套的div,每一个div都绑定着一个事件,如果我们点击div的话是按什么顺序触发这两个事件的呢。其实是默认按照冒泡的方式触发的,简单来说就是由内而外,如果还是不明白请看上面的解析图。

此Vue文件最终生成的界面是这个样子的

当我们点击的时候默认按照冒泡方式触发函数,控制台打印结果如下

现在就是.stop发挥作用的时候了,修改代码如下

Copy

<template>

  <div class="about">

    <div @click="test1">

      <div @click.stop="test2">

        测试

      </div>

    </div>

  </div>

</template>

这样我们在点击之后控制台打印结果如下

由这个结果我们可以看到,这个修饰符的作用就是阻止事件冒泡,不让他向外去执行函数,到此为止

(2).prevent修饰符#

这个时候我们再来说一下.prevent修饰符,其作用就是阻止组件本来应该发生的事件,转而去执行自己定义的事件

Copy

<template>

  <div class="about">

    <a href="https://www.cnblogs.com/Jacob98/" @click="test2">跳转</a>

  </div>

</template>

<script>

export default {

  methods:{

    test2(){

      console.log('test2')

    }

  }

}

</script>

上述代码我们并没有添加.prevent修饰符,接下来的结果我们应该可以想到,点击之后会跳转到我写的网址中(也就是我的博客😎),当时当我们对这个代码稍作修改

Copy

<template>

  <div class="about">

    <a href="https://www.cnblogs.com/Jacob98/" @click.prevent="test2">跳转</a>

  </div>

</template>

点击之后就不会跳转到相应的网址,而是去执行我写的函数

(3).capture修饰符#

其实这个的理解就很简单,就想我们第一节所说,网页是默认按照冒泡方式去触发函数的,但是当我们使用.capture修饰符时,网页就会按照捕获的方式触发函数,也就是从外向内执行,但是这个时候一定要注意,.capture修饰符一定要写在外层才能生效,原因大家应该能自己想清楚。

Copy

<template>

  <div class="about">

    <div @click.capture="test1">

      <div @click.stop="test2">

        测试

      </div>

    </div>

  </div>

</template>

控制台打印结果如下

(4).once修饰符#

这个理解起来就更加简单了,加上此修饰符之后相应的函数只能触发一次,无论你点击多少下,函数就只触发一次。这个有一个用途就是防止用户多次点击造成应用数据错误。比如说用户点击支付按钮,由于客户机器比较卡顿,点击一下之后没有立即反应就又点了一下,这个时候有可能就会造成多次扣费,降低用户体验。

(5).self修饰符#

当前元素自身时触发处理函数时才会触发函数,原理:是根据event.target确定是否当前元素本身,来决定是否触发的事件/函数

实例:如果点击内部点击2,冒泡不会执行gett方法,因为event.target指的是内部点击2的dom元素,不是外部点击1的,所以不会触发自己的点击事件

Copy

<div v-on:click.self="test1">

    test1

<div v-on:click="test2">

    test2

    </div>

</div>

相关文章

  • Vue事件修饰符详解

    Vue事件修饰符详解(转) 整体学习Vue时看到Vue文档中有事件修饰符的描述,但是看了之后并没有理解是什么意思,...

  • Vue事件修饰符

    Vue 事件修饰符 事件修饰符结合使用

  • vue中的修饰符

    事件修饰符 使用vue,让代码中只有纯粹的数据逻辑,而不是去处理DOM事件细节。 ---事件修饰符vue事件修饰符...

  • vue 篇章一

    参考文献: 官网地址Vue事件修饰符详解mvvm子路由路由器起步props 与 打data区别ajaxgithub...

  • 2020-12-29

    Vue修饰符和事件 Vue修饰符:用来修饰事件的操作例如: 代码举例:阻止默认动作 1、v-on和其他支持的修饰符...

  • 在vue中使用.stop阻止单击事件继续传播

    一、vue的事件修饰符 为了不在方法中处理DOM事件细节,vue中提供6个事件修饰符。分别是: .stop .pr...

  • vue30道面试题

    vue的修饰符 1.事件修饰符 prevent 阻止默认事件(在指定的事件后进行默认事件的阻止) stop阻止事件...

  • Vue.js 事件修饰符

    事件修饰符 Vue.js 为 v-on 提供了事件修饰符来处理 DOM 事件细节,如:event.preventD...

  • vue事件、指令、钩子

    vue事件、指令、钩子 vue的事件修饰符:.stop:阻止冒泡.prevent:阻止默认行为.capture:捕...

  • vue事件修饰符

    js事件默认冒泡: 点击内层的元素会触发外层的事件。(解决方法如下:) 事件修饰符 vue提供了事件修饰符,...

网友评论

      本文标题:Vue事件修饰符详解

      本文链接:https://www.haomeiwen.com/subject/kxubektx.html