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 相关文章推荐
Jquery 表格合并的问题分享
Sep 17 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
JavaScript中使用指数方法Math.exp()的简介
Jun 15 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
Jan 19 Javascript
jQuery实现div横向拖拽排序的简单实例
Jul 13 Javascript
关于js二维数组和多维数组的定义声明(详解)
Oct 02 Javascript
jquery操作ID带有变量的节点实例
Dec 07 Javascript
原生JS获取元素集合的子元素宽度实例
Dec 14 Javascript
微信小程序使用modal组件弹出对话框功能示例
Nov 29 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
JS实现的全选、全不选及反选功能【案例】
Feb 19 Javascript
JS实现网页端猜数字小游戏
Mar 06 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数字格式化
2006/12/06 PHP
php xml文件操作实现代码(二)
2009/03/20 PHP
PHP 工厂模式使用方法
2010/05/18 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
php封装的page分页类完整实例
2016/10/18 PHP
PHP进阶学习之命名空间基本用法分析
2019/06/18 PHP
基于jquery实现状态限定编辑的代码
2012/02/11 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
JavaScript实现的购物车效果可以运用在好多地方
2014/05/09 Javascript
用js替换除数字与逗号以外的所有字符的代码
2014/06/07 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
2015/01/06 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
小程序开发之模态框组件封装
2020/04/23 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
python 图片二值化处理(处理后为纯黑白的图片)
2019/11/01 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
王老吉广告词
2014/03/20 职场文书
大学生就业策划书范文
2014/04/04 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
六年级作文之家庭作文
2019/12/12 职场文书