vue组件添加事件@click.native操作


Posted in Javascript onOctober 30, 2020

1,给vue组件绑定事件时候,必须加上native ,否则会认为监听的是来自Item组件自定义的事件

2,等同于在子组件中: 子组件内部处理click事件然后向外发送click事件:$emit("click".fn)

<Item @click.native = "shijian()"></Item>

补充知识:vue——组件间(兄弟组件间)事件派发与接收

法一

main.js

在初始化vue之前,给 data 添加一个名为 event 的空vue对象

new Vue({
 render: h => h(App),
 router,
 store,
 data: {
  event: new Vue()
 }
}).$mount('#app')

组件一:

methods: {
   addCart (e) {
    let pos = {
     x: parseInt(e.target.getBoundingClientRect().x + 4),
     y: parseInt(e.target.getBoundingClientRect().y + 4)
    }
    this.$root.event.$emit('ballPosition', pos)
   }
  }

组件二:

created () {
   this.$root.event.$on('ballPosition', (target) => {
    this._initBall(target)
   })
  },  
 methods: {
   _initBall (target) {
    this.ball = true
    this.ballMassage = target
   }
 }

完整案例:

抛物小球动画:

created () {
   this.$root.event.$on('ballPosition', (target) => {
    this._initBall(target)
   })
  },
  methods: {
   _initBall (el) {
    this.ball.show = true
    this.ball.el = el
   },
   beforeEnter (el) {
    let pos = this.ball.el.target.getBoundingClientRect()
    el.style.top = `${pos.y}px`
    el.style.left = `${pos.x}px`
   },
   enter (el, done) {
    // 触发动画重绘
    el.offsetHeight
    let [x, y] = [parseInt(this.$refs.cart.getBoundingClientRect().x + 4), parseInt(this.$refs.cart.getBoundingClientRect().y + 8)]
    el.style.top = `${y}px`
    el.style.left = `${x}px`
    el.style.transition = `left .1s linear, top .1s cubic-bezier(.63,.02,.96,.56)`
    done()
   },
   afterEnter () {
    this.ball.show = false
   }
  },

法二

中央通信: let eventVue = new Vue()

A methods:{function(){eventVue.$emit('自定义事件','数据')}}

B created(){eventVue.$on('A 发送过来的事件名','函数')}

中央通信:

let eventVue = new Vue()

兄弟组件 A 如下:

<template>
   <div class="components-a">
      <button @click="abtn">A按钮</button>
   </div>
</template>
<script>
import eventVue from '../../js/event.js'
export default {
   name: 'app',
   data () {
    return {
        ‘msg':"我是组件A"
    }
   },
   methods:{
      abtn:function(){
          eventVue.$emit("myFun",this.msg)  //$emit这个方法会触发一个事件
      }
   }
}
</script>

兄弟组件 B 如下:

<template>
   <div class="components-a">
     <div>{{btext}}</div>
   </div>
</template>
<script>
import eventVue from '../../js/event.js'
export default {
  name: 'app',
  data () {
    return {
      'btext':"我是B组件内容"
    }
  },
  created:function(){
    this.bbtn();
  },
  methods:{
    bbtn:function(){
      eventVue.$on("myFun",(message)=>{  //这里最好用箭头函数,不然this指向有问题
         this.btext = message   
      })
    }
  }
}
</script>

以上这篇vue组件添加事件@click.native操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 表单的友好用户体现
Jan 07 Javascript
Javascript 继承机制的实现
Aug 12 Javascript
比较详细的关于javascript 解析json的代码
Dec 16 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
Nov 04 Javascript
js中遍历对象的属性和值的方法
Jul 27 Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
Aug 31 Javascript
详解react-native-fs插件的使用以及遇到的坑
Sep 12 Javascript
Vue前后端不同端口的实现方法
Sep 19 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
js实现翻牌小游戏
Jul 31 Javascript
JS如何判断对象是否包含某个属性
Aug 29 Javascript
解决removeEventListener 无法清除监听的问题
Oct 30 #Javascript
详解 javascript对象创建模式
Oct 30 #Javascript
ES6中的Javascript解构的实现
Oct 30 #Javascript
vue video和vue-video-player实现视频铺满教程
Oct 30 #Javascript
Echarts.js无法引入问题解决方案
Oct 30 #Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
Oct 30 #Javascript
vue 通过 Prop 向子组件传递数据的实现方法
Oct 30 #Javascript
You might like
PHP 采集程序 常用函数
2008/12/18 PHP
php header示例代码(推荐)
2010/09/08 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
jQuery中scrollTop()方法用法实例
2015/01/16 Javascript
js变量提升深入理解
2016/09/16 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
2018/09/26 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
pycharm运行scrapy过程图解
2019/11/22 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
css3 按钮 利用css3实现超酷下载按钮
2013/03/18 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
热能动力工程毕业生自荐信
2013/11/07 职场文书
课例研修方案
2014/05/31 职场文书
身边的榜样活动方案
2014/08/20 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
美丽的大脚观后感
2015/06/03 职场文书
百日宴上的祝酒词
2015/08/10 职场文书