Vue事件修饰符native、self示例详解


Posted in Javascript onJuly 09, 2019

事出有因

之前面试被问到的native和self相关问题,self我觉得自己应该能回答出来,可能被之前一小时的问题整懵逼了。尴尬~~
自己研究了一下,不足之处望补充,相互进步

native

修饰符native,有什么用

  1. native是原生事件(第一反应,当时没然后了...)

恶补一下

  1. native 一定是用于自定义组件,也就是自定义的html标签

结合代码说得明白

<body>
 <div id="app">
  <div class="box" >
   <Son @click='handler1'></Son>
  </div>
 </div>

</body>
<script>
 const Son = Vue.component('Son', {
  template: '<button @mouseover=handler2 class="box1">son</button>',
  methods: {
   handler2 (e) {
    
   }
  }
 })
 new Vue({
  el: "#app",
  components: {
   Son
  },
  data() {
   return {
    a: 123
   }
  },
  methods: {
   handler1 (e) {
    console.log('父级')
   }
  }
 })

</script>

注意点

  1. 当<Son @click='handler1'></Son>,子组件中的this.$listeners返回的是{click: ƒ},box1的dom上没有绑定click事件(可以打开F12查看),所以这个事件不是原生的click
  2. 当<Son @click.native='handler1'></Son>,子组件中的this.$listeners返回的是{},box1的dom上绑定了click事件(可以打开F12查看),所以这个事件是原生的click
  3. 当<Son @click.self='handler1'></Son>,子组件中的this.$listeners返回的是{click: ƒ},box1的dom上没有绑定click事件(可以打开F12查看),所以这个事件不是原生的click
  4. 子组件的this.$emit('eventTpye')是从this.$listeners返回值中查找的

为什么有时候组件点击事件不会生效

猜测

  • 子组件html标签没有定义click原生事件
  • 子组件没有执行this.$emit('click')

所以

直接.native将事件绑定到子组件html标签上,类似dom.addEventListener('click', handler)

self

作用

引用官方说明

<!-- 只当在 event.target 是当前元素自身时触发处理函数 -->
<!-- 即事件不是从内部元素触发的 -->
<div v-on:click.self="doThat">...</div>

结合代码说明

<body>
 <div id="app">
  <div class="box" @click.self='handler1'>
   <Son ></Son>
  </div>
 </div>

</body>
<script>
 const Son = Vue.component('Son', {
  template: '<button @click=handler2 class="box1">son</button>',
  methods: {
   handler2 (e) {
    console.log(e.target, e.currentTarget)
   }
  }
 })
 new Vue({
  el: "#app",
  components: {
   Son
  },
  data() {
   return {
    a: 123
   }
  },
  methods: {
   handler1 (e) {
    console.log(e.target, e.currentTarget)
   }
  }
 })
</script>

就是利用e.target和e.currentTarget,当添加self时,只有当两者相等时才会触发回调

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
[原创]来自ImageSee官方 JavaScript图片浏览器
Jan 16 Javascript
javascript add event remove event
Apr 07 Javascript
javascript 面向对象思想 附源码
Jul 07 Javascript
javascript实现的基于金山词霸网络翻译的代码
Jan 15 Javascript
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
form表单action提交的js部分与html部分
Jan 07 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
Feb 06 Javascript
Bootstrap树形控件使用方法详解
Jan 27 Javascript
JS和Canvas实现图片的预览压缩和上传功能
Mar 30 Javascript
vue基于mint-ui实现城市选择三级联动
Jun 30 Javascript
vue中 this.$set的用法详解
Sep 06 Javascript
Vue项目中使用flow做类型检测的方法
Mar 18 Javascript
如何自定义微信小程序tabbar上边框的颜色
Jul 09 #Javascript
微信小程序wx.request拦截器使用详解
Jul 09 #Javascript
javascript实现图片轮播代码
Jul 09 #Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 #Javascript
Webpack 4如何动态切割JS注入文件名详解
Jul 09 #Javascript
Vue 实现前端权限控制的示例代码
Jul 09 #Javascript
微信小程序文章详情页跳转案例详解
Jul 09 #Javascript
You might like
php 文件上传实例代码
2012/04/19 PHP
PHP判断是否为空的几个函数对比
2015/04/21 PHP
PHP简单实现合并2个数字键数组值的方法
2017/05/30 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
AngularJS 单元测试(一)详解
2016/09/21 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
24个解决实际问题的ES6代码片段(小结)
2020/02/02 Javascript
[07:59]2014DOTA2叨叨刀塔 林熊猫称被邀请赛现场盛况震撼
2014/07/21 DOTA
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
Python实现进程同步和通信的方法
2018/01/02 Python
浅谈django orm 优化
2018/08/18 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
使用python实现滑动验证码功能
2019/08/05 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
Python Tornado之跨域请求与Options请求方式
2020/03/28 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
美国知名女性服饰品牌:New York & Company
2017/03/23 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
教师岗位聘任书范文
2014/03/29 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
公司酒会致辞
2015/07/30 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书
dubbo服务整合zipkin详解
2021/07/26 Java/Android
Python Django模型详解
2021/10/05 Python