document.addEventListener绑定事件无法生效 控制台没有输出信息

来源:4-10 Dropdown 组件点击外部区域自动隐藏

黔娄

2022-10-13

<template>
  <div class="dropdown" ref="dropdownRef">
    <a href="#" class="btn btn-outline-light my-2 dropdown-toggle" @click.prevent="toggleOpen">{{title}}</a>
    <ul class="dropdown-menu" :style="{display: 'block'}" v-if="isOpen">
        <slot></slot>
    </ul>
  </div>
</template>

<script lang="ts">
import { computed, defineComponent, ref, onMounted, onUnmounted } from 'vue'
export default defineComponent({
    name: 'DropDown',
    props: {
        title: {
            type: String,
            required: true
        }
    },
    setup () {
        const isOpen = ref(false)
        const dropdownRef = ref<null | HTMLElement>(null)
        const toggleOpen = () => {
            isOpen.value = !isOpen.value
        }
        const handler = (e: MouseEvent) => {
            console.log('点击')
            if (dropdownRef.value) {
                console.log(dropdownRef.value)
            }
        }
        onMounted(() => {
            document.addEventListener('clcik', handler)
        })
        onUnmounted(() => {
            document.removeEventListener('click', handler)
        })
        return {
            isOpen,
            toggleOpen,
            dropdownRef
        }
    }
})
</script>

<style>

</style>

写回答

2回答

张轩

2022-10-15

同学你好

我这里提示你回复了问题 但是看不到内容 是不是被系统过滤掉了?

0
1
黔娄
我找到哪里出问题了,‘clcik’点击事件拼错了
2022-10-15
共1条回复

张轩

2022-10-14

同学你好

可以把源代码(git)提供给我一下 我在本地帮你看下,注意发链接的时候将协议去掉,要不会被系统删除掉

0
1
黔娄
老师,我找到原因了,监听的点击事件‘clcik’拼错了
2022-10-14
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程