当前位置:   article > 正文

vue---获取事件对象 ($event)_vue点击事件获取事件对象

vue点击事件获取事件对象

point 1:获取事件对象

在事件的回调函数中传入参数$event,可以获取该事件的事件对象

  1. <template>
  2. <button @click="handler($event)">按钮</button>
  3. </template>
  4. <script>
  5. export default{
  6. methods:{
  7. handler(e){
  8. console.log(e)
  9. }
  10. }
  11. }
  12. </script>

在点击这个按钮时 可以查看控制台打印出的事件对象

 

 point 2 :VUE2通过$emit配合$event,向父组件传参

父组件:在父组件中通过$event接收

  1. <template>
  2. <Test @change"showData($event)" />
  3. <h3>{{text}}</h3>
  4. </template>
  5. <script>
  6. import Test from '@/components/Test.vue'
  7. export default {
  8. data(){
  9. return {
  10. text :''
  11. }
  12. }
  13. showData(val){
  14. console.log(val);
  15. this.text = val
  16. },
  17. }
  18. </script>

子组件:在子组件中通过$emit注册事件,将数据作为参数传入,

  1. <template>
  2. <button @click="$emit('change', 'helloWorld')">按钮</button>
  3. <button @click="showData($event)">按钮</button>
  4. <!-- $emit()的第一个参数是定义的事件名,第二个参数是要传入的数据 -->
  5. </template>
  6. <script>
  7. export default {
  8. showData(val){
  9. console.log(val)
  10. this.$emit('change',val)
  11. // 或者这样传递数据
  12. this.$emit('change','hello,world')
  13. }
  14. }
  15. </script>

ponit 3 :vue3 实现自定义事件

因为vue3 是组合式api的写法 所以呢 是没有this的  那么使用this.$emit 来发送事件信息是不可以的。当然vue3就诞生了自己的方法

利用:defineEmits方法返回触发自定义事件---不需要引入,直接使用

子组件的名字---Event

  1. <template>
  2. <div class="child">
  3. <p>我是子组件2</p>
  4. <button @click="handler">点击我触发自定义事件xxx</button>
  5. </div>
  6. </template>
  1. let $emit=defineEmit(['xxx'])
  2. console.log($emit,'asdasdas');
  3. //$emit打印出来是一个箭头函数
  4. //(event, ...args) => instance.emit(event, ...args) 'asdasdas'
  5. //args是一个注入的参数,
  1. const handler = () => {
  2. //第一个参数:事件类型 第二个|三个|N参数即为注入数据
  3. $emit('xxx','东风导弹','航母');
  4. };

父组件--引入 子组件

  1. <template>
  2. <div>
  3. <Event @xxx="handler1" @click="handler2"></Event>
  4. </div>
  5. </template>
  6. <script setup lang="ts">
  7. //引入子组件
  8. import Event from './Event.vue';
  9. //事件回调---1
  10. const handler1 = (param1,param2)=>{
  11. console.log(param1,param2);
  12. }
  13. //事件回调--2
  14. const handler2 = (param1,param2)=>{
  15. console.log(param1,param2);
  16. }
  17. </script>

子组件传递过来的数据直接可以在父组件的子组件部分的回调函数,形参中获取到哦

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/79338
推荐阅读