前端组件库—— FullCalendar 知识点大全(二)

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 教程来源 http://lemci.cn 本文详解 FullCalendar 核心配置与事件管理:涵盖视图、事件、时区本地化、交互等配置;支持自定义视图、按钮文本及多语言;提供事件对象结构、多种数据源(静态/JSON/回调)、extendedProps 扩展属性、动态增删改及渲染定制,助力高效日历开发。

三、核心配置参数

FullCalendar 提供了丰富的配置选项,用于定制日历的外观和行为。以下是最常用的配置参数分类详解。

3.1 视图配置
image.png
3.2 事件配置
image.png
3.3 时间与本地化配置
image.png
3.4 交互配置
image.png
3.5 自定义视图
当需要创建具有特定时长的自定义视图时,可以通过 views 参数进行配置。

var calendar = new Calendar(calendarEl, {
  defaultView: 'resourceTimelineCustom',
  views: {
    resourceTimelineCustom: {
      type: 'resourceTimeline',
      duration: { days: 4 }    // 自定义视图时长为4天
    }
  }
});

3.6 按钮文本自定义与本地化

var calendar = new Calendar(calendarEl, {
  buttonText: {
    today: '今天',
    month: '月',
    week: '周',
    day: '日',
    list: '列表'
  },
  monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
  monthNamesShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
  dayNames: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
  dayNamesShort: ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
});

3.7 视图特定配置
agenda 视图特有配置:

allDaySlot:是否显示“全天”区域,默认 true

allDayText:自定义全天区域显示文本,默认 'all-day'

slotEventOverlap:事件是否允许重叠,默认 true

slotDuration:时间槽间隔(分钟)

minTime / maxTime:可视区域的时间范围

四、事件数据管理

4.1 事件对象(Event Object)
事件对象是 FullCalendar 中最核心的数据结构,用于存储每个日程事件的信息。
image.png
image.png
4.2 事件数据源(Event Sources)
FullCalendar 支持从多种数据源获取事件数据。

方式一:静态数组

events: [
  { title: '事件 1', start: '2024-01-01' },
  { title: '事件 2', start: '2024-01-05', end: '2024-01-07' }
]

方式二:JSON API

events: '/api/events'

方式三:回调函数

events: function(info, successCallback, failureCallback) {
  $.ajax({
    url: '/api/events',
    data: {
      start: info.start.valueOf(),
      end: info.end.valueOf()
    },
    success: function(data) {
      successCallback(data);
    }
  });
}

4.3 自定义事件属性
可以通过 extendedProps 为事件添加自定义属性。

var calendar = new Calendar(calendarEl, {
  events: [
    {
      title: 'Meeting',
      start: '2023-10-10T10:00:00',
      extendedProps: {
        description: 'Discuss project updates',
        priority: 'high'
      }
    }
  ],
  eventContent: function(arg) {
    // 在渲染时访问自定义属性
    let description = arg.event.extendedProps.description;
    return { html: `<b>${arg.event.title}</b><br/><small>${description}</small>` };
  }
});

4.4 动态添加/更新/删除事件

// 添加事件
calendar.addEvent({
  title: '新事件',
  start: '2024-01-15',
  allDay: true
});

// 获取事件
var event = calendar.getEventById('event-id');

// 更新事件(方式一:使用 setProp 和 setDates)
event.setProp('title', '修改后的标题');
event.setDates('2024-01-20', '2024-01-22');

// 更新事件(方式二:使用 remove 后重新 add)
event.remove();
calendar.addEvent({ ...newEventData });

// 批量更新事件源
calendar.refetchEvents();

4.5 扩展事件属性与显示
如果需要在事件对象中添加额外的字段并在日历中显示,可以在渲染回调中处理。例如,向事件添加 description 字段并在日历中显示。

eventContent: function(arg) {
  let description = arg.event.extendedProps.description;
  let html = `<div class="fc-event-title">${arg.event.title}</div>`;
  if (description) {
    html += `<div class="fc-event-description">${description}</div>`;
  }
  return { html: html };
}

4.6 动态刷新事件数据
当后端数据变化时,可以调用以下方法刷新日历:

// 重新获取所有事件源的数据
calendar.refetchEvents();

// 移除特定事件
var event = calendar.getEventById('event-id');
event.remove();

// 添加新事件
calendar.addEvent({
  title: '新日程',
  start: '2024-01-20'
});

来源:
http://xcfsr.cn

相关文章
|
2月前
|
资源调度 前端开发 JavaScript
前端组件库—— FullCalendar 知识点大全(一)
教程来源 http://htnus.cn FullCalendar 是一款功能强大、高度可定制的开源 JavaScript 日历库,支持月/周/日/列表/时间轴等多视图,提供拖拽、缩放、事件管理、资源调度等企业级能力,广泛应用于日程、预约、排班等场景,Vue/React/Angular 全支持。
|
开发工具 git
git push 提交后撤回--图文详解
git push 提交后撤回--图文详解
658 1
|
4月前
|
人工智能 前端开发 Serverless
不用写一行代码!阿里云上线 Qwen3 一键部署,秒开大模型对话界面
通义千问Qwen3正式开源8款混合推理模型,含2款MoE(235B/30B)和6款Dense(0.6B–32B),支持119种语言、思考/非思考双模式,在代码、数学等基准表现优异。依托阿里云函数计算,提供vLLM/SGLang/Ollama等多种部署方式,开箱即用。(239字)
745 23
|
JavaScript 前端开发 索引
js的some函数
js的some函数
555 1
|
Linux Windows
windows下的包管理器scoop
windows下的包管理器scoop
372 0
|
消息中间件 Java 持续交付
Spring Cloud Alibaba 项目搭建步骤和注意事项
Spring Cloud Alibaba 项目搭建步骤和注意事项
Spring Cloud Alibaba 项目搭建步骤和注意事项
|
存储 弹性计算 运维
测试用户名与密码是否正确
【4月更文挑战第29天】
174 0