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 相关文章推荐
JS中简单的实现像C#中using功能(有源码下载)
Jan 09 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
Dec 02 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
Sep 24 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
Dec 14 Javascript
js正则表达式中exec用法实例
Jul 23 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
Aug 05 Javascript
JavaScript中的闭包
Feb 24 Javascript
JavaScript中Array的实用操作技巧分享
Sep 11 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
Jan 30 Javascript
本地搭建微信小程序服务器的实现方法
Oct 27 Javascript
javascript合并两个数组最简单的实现方法
Sep 14 Javascript
vue页面加载时的进度条功能(实例代码)
Jan 13 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 include任意文件或URL介绍
2014/04/29 PHP
php实现parent调用父类的构造方法与被覆写的方法
2015/02/11 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
激活 ActiveX 控件
2006/10/09 Javascript
document.onreadystatechange事件的用法分析
2009/10/17 Javascript
获取offsetTop和offsetLeft值的js代码(兼容)
2013/04/16 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
2016/12/28 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
2017/10/31 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
[01:03:38]2014 DOTA2国际邀请赛中国区预选赛5.21 CNB VS CIS
2014/05/22 DOTA
python将图片文件转换成base64编码的方法
2015/03/14 Python
python判断输入日期为第几天的实例
2018/11/13 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
Django中ORM找出内容不为空的数据实例
2020/05/20 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
学生自我鉴定
2013/12/18 职场文书
婚前财产公证书
2014/04/10 职场文书
党委班子对照检查材料
2014/08/19 职场文书
2016年学校“6﹒26国际禁毒日”宣传活动总结
2016/04/05 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python