美文网首页
vue中的$event

vue中的$event

作者: 小蜗牛的碎碎步 | 来源:发表于2020-06-23 16:54 被阅读0次
问题来源

组件库封装的Icon组件,需要使用修饰符.stop阻止冒泡,但使用时报错,$event为undefined

DOM中event 对象的获取方式(以下两种方式chorme都支持)
  1. 回调函数的形参(IE8及以下浏览器不支持)
methods: {
      e_Click(evt) {
        console.log(evt);
      }
    }
  1. window.event - 挂载到window对象上(Firefox不支持)
methods: {
      e_Click() {
       const evt = window.event;
        console.log(evt);
      }
    }
普通元素中的$event

绑定函数无参数 - event对象作为默认作为参数传递

<template>
  <div class="hello" @click="e_Click">
    <h1>{{ msg }}</h1>
  </div>
</template>
<script>
  export default {
    name: 'HelloWorld',
    props: {
      msg: String
    },
    methods: {
      e_Click(evt) {
        console.log(evt);
      }
    }
  }
</script>

绑定函数有其它参数 - 使用$event传递

<template>
  <div class="hello" @click="e_Click('hello组件',$event)">
    <h1>{{ msg }}</h1>
  </div>
</template>

<script>
  export default {
    name: 'HelloWorld',
    props: {
      msg: String
    },
    methods: {
      e_Click(value,event) {
        console.log(value,event);
      }
    }
  }
</script>
组件中的$event

子组件

<template>
  <div class="hello" @click="e_Click">
  </div>
</template>

<script>
  export default {
    name: 'HelloWorld',
    methods: {
      e_Click() {
        this.$emit('click');
      }
    }
  }
</script>

父组件

<template>
  <div id="app">
    <HelloWorld @click="e_ChildClick('hello',$event)"/>
  </div>
</template>

<script>
  import HelloWorld from './components/HelloWorld.vue'

  export default {
    name: 'App',
    components: {
      HelloWorld
    },
    methods:{
      e_ChildClick(value,event){
        console.log("子组件点击事件:",value,event); // hello undefined
      }
    }
  }
</script>

以上写法,$event为undefined,当然事件修饰符也不能使用,因为子组件中的click方法并没有把event暴露出来。

修正后 - 子组件

<template>
  <div class="hello" @click="e_Click">
  </div>
</template>

<script>
  export default {
    name: 'HelloWorld',
    props: {
      msg: String
    },
    methods: {
      e_Click(event) {
        this.$emit('click',event); // 将event对象传递出去
      }
    }
  }
</script>

相关文章

  • vue中的$event

    问题来源 组件库封装的Icon组件,需要使用修饰符.stop阻止冒泡,但使用时报错,$event为undefine...

  • vue-event-calendar

    vue-event-calendar vue-event-calendar是一款简单小巧的事件日历组件,针对Vue...

  • vue中默认传递event方法

    1.在vue中普通方法中默认带有event DOM事件

  • 关于vue中@click.native(demo)

    关于vue中@click.native .native - listen for a native event o...

  • vue中$emit与$on

    var Event = new Vue();相当于又new了一个vue实例,Event中含有vue的全部方法; E...

  • vue中$emit与$on

    var Event = new Vue();相当于又new了一个vue实例,Event中含有vue的全部方法; E...

  • vue文档集合

    Vue2使用笔记3--父子组件的通信Vue 2.0开发实践(组件间通讯)Event Bus 在Vue中的使用vue...

  • Vue-cnode社区-阻止向上冒泡

    在vue中传入默认原生event对象用$event stop阻止单击向上冒泡 self用法:self只是作用在元素...

  • vue组件通讯----event-bus

    vue组件之间通讯,通过props和@event($emit('event'))的方式传递数据和改变数据,存在诸多...

  • vue组件传值

    vue中的参数传递方式有1、父子组件中通过props,$emit互相传递2、event bus事件总线3、vuex...

网友评论

      本文标题:vue中的$event

      本文链接:https://www.haomeiwen.com/subject/tmlhfktx.html