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 12 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
Sep 06 Javascript
JS实现上下左右对称的九九乘法表
Feb 22 Javascript
Javascript的比较汇总
Jul 25 Javascript
jQuery基于函数重载实现自定义Alert函数样式的方法
Jul 27 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
Sep 24 Javascript
Angularjs中的页面访问权限怎么设置
Nov 11 Javascript
JavaScript获取select中text值的方法
Feb 13 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
js获取url页面id,也就是最后的数字文件名
Sep 25 Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 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 过滤器实现代码
2010/08/09 PHP
php限制ip地址范围的方法
2015/03/31 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
图片自动更新(说明)
2006/10/02 Javascript
js压缩利器
2007/02/20 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
javascript每日必学之运算符
2016/02/16 Javascript
初步使用bootstrap快速创建页面
2016/03/03 Javascript
JavaScript实现DOM对象选择器
2016/09/24 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
Web 开发中Ajax的Session 超时处理方法
2017/01/19 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
vue实现验证码输入框组件
2017/12/14 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
python配置grpc环境
2019/01/01 Python
如何在python中写hive脚本
2019/11/08 Python
Python中logger日志模块详解
2020/08/04 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
速卖通欧盟:Aliexpress EU
2020/08/19 全球购物
介绍一下代理模式(Proxy)
2014/10/17 面试题
给海归自荐信的建议
2013/12/13 职场文书
银行门卫岗位职责
2013/12/29 职场文书
工程专业应届生求职信
2014/02/19 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
导航工程专业自荐信
2014/09/02 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
初中美术教学反思
2016/02/17 职场文书
在js中修改html body的样式
2021/11/11 Javascript