// 在全局main.js中注册自定义指令
import { createApp } from 'vue'
const app = createApp({})
app.directive('click-outside', {
mounted(el, binding) {
const onClickOutside = (event) => {
if (!el.contains(event.target) && el !== event.target) {
binding.value()
}
}
document.addEventListener('click', onClickOutside)
el._clickOutside = onClickOutside
},
beforeUnmount(el) {
document.removeEventListener('click', el._clickOutside)
delete el._clickOutside
}
})
</script>
// 在组件中使用自定义指令
<template>
<div>
<el-select v-click-outside="closeSelect">
<!-- select options -->
</el-select>
</div>
</template>
<script setup>
const closeSelect=()=> {
// 关闭select弹窗的逻辑
}
}