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

FullCalendar v6.0.2:拖拽事件时如何保留.fc-event-title中的图标?

解决拖拽事件后未出席图标丢失的问题

核心原因

拖拽移动事件时,FullCalendar会销毁原事件DOM元素,重新生成新的元素展示更新后的事件。如果图标添加逻辑没在重新渲染时触发,或者事件对象的isMissed属性丢失,就会导致图标消失。

具体解决方案

1. 保留拖拽后的isMissed属性

在eventDrop回调里手动同步属性,确保拖拽后事件对象依然保留标记状态:

eventDrop: function(info) {
  // 强制保留isMissed属性,避免更新时丢失
  info.event.setExtendedProp('isMissed', info.event.extendedProps.isMissed || false);
  // 若需同步到后端,这里加上AJAX请求,把isMissed参数一起提交
}

同时确保eventRender逻辑在重新渲染时正常执行:

eventRender: function(info) {
  if (info.event.extendedProps.isMissed === true) {
    const icon = "<i class='fas fa-calendar-times pull-right' title='Rendez-vous non honoré'></i>";
    info.el.querySelector('.fc-event-title').insertAdjacentHTML('afterbegin', icon);
  }
}

2. 用eventContent替代直接DOM操作(FullCalendar v5+推荐)

如果使用的是FullCalendar v5及以上版本,官方推荐通过eventContent自定义事件内容,让日历自身管理HTML结构,从根源避免DOM丢失问题:

eventContent: function(info) {
  let content = info.event.title;
  if (info.event.extendedProps.isMissed) {
    content = `<i class='fas fa-calendar-times pull-right' title='Rendez-vous non honoré'></i>${content}`;
  }
  return { html: content };
}

3. 后端同步注意事项

如果事件数据存储在后端,拖拽保存时一定要把isMissed属性一起传给后端,后端返回的事件数据也必须包含这个属性,确保重新加载事件时标记状态不会丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:05:38