如何让Vuetify标签页的Tasks按钮徽章始终显示无需点击?
解决Tasks标签徽章仅点击后显示的问题
问题原因
目前只有点击Tasks标签才会显示未完成任务的徽章,主要是因为v-tab未激活状态下,内部徽章的渲染逻辑没有及时触发,或者初始时uncompletedTasksNumber的响应式更新没同步到视图。
修复代码
调整徽章的包裹逻辑,确保只要存在未完成任务,徽章就会一直显示在Tasks标签上:
<v-card :style="{ textAlign: 'left' }" class="basic-card pa-6" :class="{ 'small-padding': !$vuetify.breakpoint.xl }" elevation="0" flat :height="windowHeight - 104 + 'px'" outlined align="start" justify="start"> <v-row class="mt-0"> <v-col cols="12" class="pt-0"> <v-tabs v-model="eventTabs" center-active class="mx-0" grow> <v-tab v-for="(tab, index) in eventAssets" :key="index" :class="{ 'mr-1': index < (eventAssets.length - 1) }" class="pa-0 text-none"> <!-- 调整:统一用v-badge和span处理标签文本,确保徽章条件满足就显示 --> <v-badge v-if="tab === 'Tasks' && uncompletedTasksNumber > 0" color="error" :content="uncompletedTasksNumber" tile> {{ tab }} </v-badge> <span v-else>{{ tab }}</span> </v-tab> </v-tabs> </v-col> </v-row> </v-card>
额外要检查的点
- 确认
uncompletedTasksNumber是响应式变量:Vue 2里要放在data中,Vue 3要用ref/reactive声明,保证数值变化时视图能自动更新。 - 核对
eventAssets数组里确实有'Tasks'这个项,确保条件判断tab === 'Tasks'能精准匹配。
内容的提问来源于stack exchange,提问作者Dime N.
相关产品推荐
相关产品推荐

