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+XML 操作
Sep 20 Javascript
利用div+jquery自定义滚动条样式的2种方法
Jul 18 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
May 21 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
Aug 02 Javascript
jQuery实现用户信息表格的添加和删除功能
Sep 12 jQuery
微信小程序商品详情页规格属性选择示例代码
Oct 30 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
Jul 25 Javascript
vue动态注册组件实例代码详解
May 30 Javascript
VUE项目中加载已保存的笔记实例方法
Sep 14 Javascript
微信小程序自定义tabbar custom-tab-bar 6s出不来解决方案(cover-view不兼容)
Nov 01 Javascript
图解JS原型和原型链实现原理
Sep 15 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中str_replace函数使用小结
2008/10/11 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
Laravel学习教程之路由模块
2017/08/18 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
JS backgroundImage控制
2009/05/19 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
jQuery.datatables.js插件用法及api实例详解
2016/10/28 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
用webpack4开发小程序的实现方法
2019/06/04 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
使用python装饰器验证配置文件示例
2014/02/24 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
应届生英语教师求职信
2013/11/05 职场文书
导游个人求职信范文
2014/03/23 职场文书
讲党性心得体会
2014/09/03 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
房产公证书格式
2015/01/26 职场文书
关爱空巢老人感想
2015/08/11 职场文书
新手,如何业余时间安排好写作、提高写作能力?
2019/10/21 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
浅谈如何保证Mysql主从一致
2022/03/13 MySQL