vue3组件中如何中判断用户是否绑定了某个自定义方法
组件调用:
<VDatepicker v-model="range" @query="() => {}" @click="() => {}"></VDatepicker>
VDatepicker 组件:
<script setup lang="ts">
const emit = defineEmits(['query'])
// 部分代码省略
</script>
<template>
<!-- 如果绑定了 query 事件就显示查询按钮 -->
<VButton v-if="$attrs.onQuery" color="primary" @click="emit('query')" raised>查询</VButton>
</template>
我要实现的功能大概就是如果绑定了 query
事件,就显示 查询
按钮,但实际测试发现,$attrs.onClick
是 true
,$attrs.onQuery
是 false
<VButton v-if="$attrs.onClick">查询</VButton> // 显示
<VButton v-if="$attrs.onQuery">查询</VButton> // 不显示
这是为什么,怎么判断用户有没有绑 @query=""
测试发现,添加下这行 const emit = defineEmits(['query'])
会导至 $attrs['onQuery']
为 false
, 不知道为什么,也不知道怎么解决
可以通过
useListeners
来判断,useListeners
可以获取到所有绑定的事件,代码如下