You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js问题:无法在Vuetify的v-app-bar中使用下拉按钮

解决Vuetify中App Bar内下拉菜单按钮消失的问题

嘿,我知道问题出在哪啦!你只添加了activator插槽的模板,但忘了最关键的v-menu组件——这个插槽是v-menu专属的,单独直接放在v-app-bar里根本没法生效,所以按钮才会直接消失。

要实现App Bar里的下拉菜单,你需要把activator插槽嵌套在v-menu组件内部,再把整个v-menu放在v-app-bar里。下面是修正后的完整代码:

<template>
  <v-app-bar>
    <v-spacer></v-spacer>
    <!-- 外层需要包裹v-menu组件,它是下拉菜单的核心容器 -->
    <v-menu
      bottom
      right
    >
      <!-- activator插槽属于v-menu,放在这里才会生效 -->
      <template v-slot:activator="{ on, attrs }">
        <v-btn color="primary" v-bind="attrs" v-on="on">
          Menu
        </v-btn>
      </template>
      <!-- 这里放置下拉菜单的具体内容 -->
      <v-list>
        <v-list-item title="选项1" @click="handleOptionClick('选项1')" />
        <v-list-item title="选项2" @click="handleOptionClick('选项2')" />
        <v-list-item title="选项3" @click="handleOptionClick('选项3')" />
      </v-list>
    </v-menu>
  </v-app-bar>
</template>

<script setup>
// 示例点击事件,可根据你的业务需求修改
const handleOptionClick = (option) => {
  console.log(`点击了${option}`)
}
</script>

关键细节说明:

  • v-menu是Vuetify专门用来实现下拉菜单的容器组件,菜单的显示/隐藏逻辑全靠它管理,activator插槽是它的内置插槽,用来指定触发菜单的元素(也就是你的按钮)。
  • 给v-menu加上bottom和right属性,是为了让菜单在按钮的下方右侧弹出,适配App Bar的布局位置,你也可以根据需求换成top、left等属性调整弹出位置。
  • v-bind="attrs"和v-on="on"是把v-menu需要的状态属性和交互事件绑定到按钮上,确保菜单能正确响应按钮的点击、hover等操作。

这样修改后,你的按钮就会重新显示,点击它就能正常展开下拉菜单啦!

内容的提问来源于stack exchange,提问作者Manan Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 23:47:52