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 相关文章推荐
通过DOM脚本去设置样式信息
Sep 19 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
Dec 29 Javascript
JavaScript模块规范之AMD规范和CMD规范
Oct 27 Javascript
基于javascript实现简单计算器功能
Jan 03 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
Mar 10 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
Nov 10 Javascript
基于Vue.js实现tab滑块效果
Jul 23 Javascript
javascript 开发之网页兼容各种浏览器
Sep 28 Javascript
vue实现鼠标移入移出事件代码实例
Mar 27 Javascript
微信小程序 生成携带参数的二维码
Oct 23 Javascript
小程序如何自主实现拦截器的示例代码
Nov 04 Javascript
使用JS监听键盘按下事件(keydown event)
Nov 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
用PHP生成静态HTML速度快类库
2007/03/18 PHP
php 分库分表hash算法
2009/11/12 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
JS中表单的使用小结
2014/01/11 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
简介JavaScript中的getSeconds()方法的使用
2015/06/10 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
echarts整合多个类似option的方法实例
2018/07/10 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
Python简单删除目录下文件以及文件夹的方法
2015/05/27 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
Python元组知识点总结
2019/02/18 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
美国最大的宠物用品零售商:PetSmart
2016/11/14 全球购物
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
自我鉴定注意事项
2014/01/19 职场文书
机修工工作职责
2014/02/21 职场文书
保证书格式范文
2014/04/28 职场文书
机电一体化毕业生自荐信
2014/06/19 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
公务员考察材料
2014/12/23 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
2016党校学习心得体会
2016/01/07 职场文书