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

能否在Quasar Q-Date组件的事件上添加文本/标签?

在Quasar Q-Date组件中为日期添加文本标签

要实现Q-Date日期单元格显示文本标签而非仅彩色标记,核心是利用组件提供的day-content插槽来自定义日期内容。以下是具体实现方案:

实现代码示例

<template>
  <q-date
    v-model="selectedDate"
    :events="events"
  >
    <template #day-content="{ date, events }">
      <!-- 保留默认的日期数字显示 -->
      <span class="day-number">{{ date.day }}</span>
      <!-- 渲染当前日期的事件文本标签 -->
      <div v-if="events.length > 0" class="event-tags">
        <span 
          v-for="event in events" 
          :key="event.id"
          class="event-tag"
          :style="{ backgroundColor: event.color }"
        >
          {{ event.label }}
        </span>
      </div>
    </template>
  </q-date>
</template>

<script setup>
import { ref } from 'vue'

const selectedDate = ref(null)
// 自定义事件数据,包含日期、标签文本和背景色
const events = ref([
  {
    date: '2024-05-15',
    color: '#4CAF50',
    label: '团队会',
    id: 1
  },
  {
    date: '2024-05-15',
    color: '#2196F3',
    label: '提交周报',
    id: 2
  },
  {
    date: '2024-05-20',
    color: '#FF9800',
    label: '生日',
    id: 3
  }
])
</script>

<style scoped>
.event-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 2px;
  margin-top: 3px;
}

.event-tag {
  font-size: 10px;
  padding: 1px 4px;
  border-radius: 3px;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: calc(100% - 8px);
}

.day-number {
  font-size: 14px;
}
</style>

关键说明

  • day-content插槽会传入每个日期的date对象和对应的events数组,你可以基于这些数据自定义内容
  • 保留默认的日期数字,避免用户无法识别日期
  • 通过v-for遍历事件数组,为每个事件渲染带颜色的文本标签
  • 自定义样式时,通过flex-wrap让标签自动换行,text-overflow处理过长文本,确保内容不会溢出单元格

注意事项

  • 标签文本尽量简短,适配日期单元格的有限空间
  • 可以根据需求调整标签的字体大小、间距和背景色,优化视觉效果

内容的提问来源于stack exchange,提问作者Johannes Forsting

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:42:47