Vue之v-on事件修饰符的含义及使用

56 篇文章 4 订阅

背景:Vue 拆封了一个组件,在组件里面会使用一个方法来改变父组件传过来的值,

但是在子组件里面操作父组件的数据变更,实在比较麻烦(因为单向数据流),

So 能不能直接在组件上面绑定事件方法呢,因此就在封装的组件上面写了 :@click="getDataList"

    <DefaultComp
      v-if="dataList.length > 0"
      :dataList="dataList"
      @click="getDataList"
    />

但是绑定的 click 方法会不生效,So 要想解决,就需要用到

v-on 事件修饰符 的 .native 了 , 接下来就来讲解一下各修饰符的含义及使用。


Vue 中绑定事件 v-on:事件类型="方法" ,v-on 简写 @


v-on 事件修饰符

<!-- 
  v-on  指令的修饰符 :
    .stop  阻止事件冒泡
    .capture  事件进行捕获
    .prevent  阻止默认事件
    .once  事件只会执行一次
    .self  事件之作用给标签本身
-->
.native   侦听组件根元素上的原生事件
  • 事件修饰符

  用来处理事件的特定行为

  • 1、<!-- 阻止冒泡 .stop -->

  <button @click.stop = "doThis"></button>

只知作用为:阻止事件冒泡,不知其具体如何使用。

下面来举个栗子:就是外层大的 Div 盒子本身有绑定了一个 click 点击事件,

但是如果内层有一个小的 div 盒子也绑定了一个 click 点击事件的话,

点击小盒子 div 时,会同时触发 大、小盒子身上的两个事件,容易造成交互紊乱。

所以此时就需要在小盒子 div 的事件上添加一个 .stop 修饰符来阻止 大盒子 的事件触发,

让只点击小盒子的 click 事件单独触发,而不触发大盒子身上的点击事件。

<template>
  <div @click="bigClickEvent">
    <!-- 内层小盒子div需要加.stop来阻止事件冒泡以免大、小盒子的事件同时触发 -->
    <div @click.stop="smallClickEvent"></div>
  </div>
</template>

  • 2、<!-- 阻止默认行为 .prevent -->

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

  • 3、<!-- 只执行一次 .once -->

  <div @click.once = "incr( )">自增一下</div>

  • 4、<!-- 绑定的元素本身触发时才触发回调 .self -->

  <ul @click.self = "incr( )">

    <li>你好世界</li>

  </ul>

  • <!--  串联修饰符 -->

  <button @click.stop.prevent = "doThis"></button>


@click.native中 .native 的含义与使用

当你给一个 vue 组件绑定事件的时候,要加上 native ,

如果是普通的 html 元素,就不需要

<template>
    <div id="app">
        <ButtonComp @click.native = 'goToNext'>点击跳转</ButtonComp>
    </div>
</template>

<script>
import ButtonComp from '../components/ButtonComp'

export default{
  components:{ ButtonComp },
      
  methods: {
    goToNext() {
      console.log('Go to next');
    },
  },
}
</script>

So,在 组件上 加上 .native 修饰符 就可以使用 methods 内绑定的对应方法了

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值