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 相关文章推荐
两个select之间option的互相添加操作(jquery实现)
Nov 12 Javascript
生成二维码方法汇总
Dec 26 Javascript
javascript实现input file上传图片预览效果
Dec 31 Javascript
使用ajaxfileupload.js实现上传文件功能
Aug 13 Javascript
总结十个Angular.js由浅入深的面试问题
Aug 26 Javascript
简单的js计算器实现
Oct 26 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
Dec 02 Javascript
vue双花括号的使用方法 附练习题
Nov 07 Javascript
深入理解ES6之数据解构的用法
Jan 13 Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
js+canvas绘制图形验证码
Sep 21 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数组函数序列之array_flip() 将数组键名与值对调
2011/11/07 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
2015/11/09 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
Z-Blog中用到的js代码
2007/03/15 Javascript
Extjs学习笔记之九 数据模型(上)
2010/01/11 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
JS字符串截取函数实例
2013/12/27 Javascript
当滚动条滚动到页面底部自动加载增加内容的js代码
2014/05/13 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python与shell的3种交互方式介绍
2015/04/11 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
python调用支付宝支付接口流程
2019/08/15 Python
python opencv调用笔记本摄像头
2019/08/28 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
python help函数实例用法
2020/12/06 Python
北体毕业生求职信
2014/02/28 职场文书
投资合作协议书范本
2014/04/17 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
负责培养人意见
2015/06/05 职场文书
Vue的过滤器你真了解吗
2022/02/24 Vue.js
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技