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 学习笔记(onchange等)
Nov 14 Javascript
Ajax提交与传统表单提交的区别说明
Feb 07 Javascript
用Jquery实现滚动新闻
Feb 12 Javascript
js实现网站最上边可关闭的浮动广告条代码
Sep 04 Javascript
javascript中select下拉框的用法总结
Jan 07 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
jQuery表单验证之密码确认
May 22 jQuery
Javascript 之封装(Package)
Sep 14 Javascript
ES6学习笔记之let与const用法实例分析
Jan 22 Javascript
JavaScript Event Loop相关原理解析
Jun 10 Javascript
js实现点击烟花特效
Oct 14 Javascript
类和原型的设计模式之复制与委托差异
Jul 07 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
20个PHP常用类库小结
2011/09/11 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
Yii视图操作之自定义分页实现方法
2016/07/14 PHP
基于Jquery的简单图片切换效果
2011/01/06 Javascript
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
jQuery之ajax删除详解
2014/02/27 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
gridview生成时如何去掉style属性中的border-collapse
2014/09/30 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
JavaScript的函数式编程基础指南
2016/03/19 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
微信小程序 冒泡事件原理解析
2019/09/27 Javascript
Python批量查询域名是否被注册过
2017/06/21 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
Python中socket网络通信是干嘛的
2020/05/27 Python
深入了解Python enumerate和zip
2020/07/16 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
青年创业培训欢迎词
2014/01/08 职场文书
揭牌仪式主持词
2014/03/19 职场文书
股东协议书范本
2014/04/14 职场文书
作风建设演讲稿
2014/05/23 职场文书
聘任通知书
2015/09/21 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
解析Java中的static关键字
2021/06/14 Java/Android
Redis集群的关闭与重启操作
2021/07/07 Redis