首页 > 其他分享 >vue @click.native/stop/prevent

vue @click.native/stop/prevent

时间:2023-10-16 10:55:35浏览次数:37  
标签:prevent vue stop alert onSubmit 组件 click native

[email protected]
父组件要引用子组件中的点击事件,可以通过@click.native来直接访问子组件中的方法,如果不使用@click.native可在子组件中使用this.$emit('click')来传递事件

// 父组件
<template>
  <div>
    <span>父组件页面</span>
    <search @click="onSubmit"></search>
  </div>
</template>
<script>
</script>

// search.vue 子组件
<template>
  <div>
    <button @click="onSubmit">点击查找</button>
  </div>
</template>
<script>
  onSubmit(){
	alert('show')
  }
</script>

父组件中修改成@click.native="onSubmit"

// 父组件
<template>
  <div>
    <span>父组件页面</span>
    <search @click.native="onSubmit"></search>
  </div>
</template>
<script>
</script>

以上这种场景在父组件中使用@click是没法触发search中的click事件的,如果要直接触发子组件需要在父组件使用@click.native
至于为什么加上.native就可以直接触发事件,是因为使用.native之后父级组件可以像处理原生的DOM事件一样通过 v-on 监听子组件实例的任意事件(@即为v-on:的简写),如果不加natvie,会认为监听的是来自子组件search.vue自定义的事件,然而子组件内也没有使用$emit()来将子组件的触发事件抛出,因此onSubmit()方法没有执行

[email protected]阻止冒泡

<template>
  <div @click="onClick">
    <button @click="onSubmit">点击查找</button>
  </div>
</template>
<script>
    onSubmit(){
  		alert('onSubmit')
    }
 	onClick(){
  		alert('onClick')
    }
</script>

以上这种场景点击搜索按钮我们会发现会先弹窗onClick,在弹窗onSubmit,事件冒泡到上级甚至更多的上级,这不是我们想要的,要解决以上冒泡的情况,就要使用到@click.stop了,通过@click.stop="onSubmit"来解决事件向上冒泡的情况

<template>
  <div @click="onClick">
    <button @click.stop="onSubmit">点击查找</button>
  </div>
</template>
<script>
    onSubmit(){
  		alert('onSubmit')
    }
 	onClick(){
  		alert('onClick')
    }
</script>

标签:prevent,vue,stop,alert,onSubmit,组件,click,native
From: https://www.cnblogs.com/qqcc1388/p/17766852.html

相关文章

  • 手撕Vue-数据驱动界面改变下
    经过上一篇的介绍,已经实现了观察者模式的基本内容,接下来要完成的就是将上一篇的发布订阅模式运用到Nue中,实现数据驱动界面改变。在监听数据变化的章节当中,根据指定的区域和数据去编译渲染界面这个步骤处,我写了一个注释,这个注释是这样的:第一步:给外界传入的所有数据都添加get/se......
  • Vue源码学习(十一):计算属性computed初步学习
    好家伙,  1.Computed实现原理if(opts.computed){initComputed(vm,opts.computed);}functioninitComputed(vm,computed){//存放计算属性的watcherconstwatchers=vm._computedWatchers={};for(constkeyincomputed){constuser......
  • 开源项目 | 一款基于NodeJs+Vue3的强大的在线设计图片工具
     一、项目概述一款漂亮且功能强大的在线海报图片设计器,仿稿定设计。适用于海报图片生成、电商分享图、文章长图、视频/公众号封面等多种场景。二、技术特性丝滑的操作体验,丰富的交互细节,基础功能完善采用服务端生成图片,确保多端出图统一性,支持各种CSS特性简易AI......
  • vue3中setup
    和vue2不同的是vue3中的script中带有setup标签里面的setup相当于vue2中的data和methds空间可以放置函数,也可以执行函数在写时需要有return返回值<scriptsetup></script>setup执行发生在页面之前所以不能使用this函数,一般通过ref绑定组件上的值进行修改 使用函数例子......
  • 手撕Vue-数据驱动界面改变上
    经过上一篇的介绍,已经实现了监听数据的变化,接下来就是要实现数据变化后,界面也跟着变化,这就是数据驱动界面改变。想要实现数据变化之后更新UI界面,我们可以使用发布订阅模式来实现,先定义一个观察者类,再定义一个发布订阅类,然后再通过发布订阅的类来管理观察者类。接下来我们就......
  • 手撕Vue-监听数据变化
    经过上一篇的介绍,已经实现了将模板编译成具体数据,接下来要介绍的是如何监听数据的变化,本章主要完成这个需求即可。在我们文章的开始,我写了一个Vue双向数据绑定原理的文章当中封装了一个Observer类,这个类的作用就是监听数据的变化,当数据发生变化的时候,会通知订阅者,订阅者会去......
  • Vue的学习
    为什么需要前端框架当前前端开发的状态前端基础语言html:构建页面内容结构css:美化和布局页面内容Javascript:提供交互能力和动态三者整合就是我们看到的网页页面---所有的页面和页面功能都能完成现在能做什么浏览器展示的网页+小程序网站,网页游戏等等当前的状态有什么问题基......
  • 手撕Vue-编译模板数据
    经上一篇编译指令数据后,我们已经可以将指令数据编译成具体需要展示的数据了,上一篇只是编译了指令数据,还没有编译模板数据,这一篇我们就来编译模板数据。也就是{{}}这种模板的形式我们该如何编译,其实和指令数据编译的思路是一样的,废话不多说,直接上代码。改造一下buildText方法......
  • 手撕Vue-编译指令数据
    经过上一篇的分析,完成了查找指令和模板的功能,接下来就是编译指令的数据了。所以本章节主要处理的方法则是buildElement方法,我们先分析一下我们所拿到的数据在进行编码,这样会更加清晰一些。我将name,value打印出来,分别对应的值是name:v-model,value:name,在今后我们的命......
  • vue学习六
    <divid="app6"><divv-for="iteminlist">{{item}}</div></div><script>constapp6=newVue({el:'#app6',data:{list:["1&qu......