当我编辑全天事件时, fullCalendar ( 2.0.2 ) 会将其转换为非全天事件。当在日历视图中单击该事件时,我会加载一个允许用户编辑详细信息的模式。选择 allDay 或时间不是其中的一部分,但日期是。单击提交后,我会触发 AJAX 调用,该调用会更新事件服务器端,然后返回包含事件 ID 的 JSON 数据。然后,我查询 fullCalendar 以获取正确的事件。此时allDay和_allDay都仍然是true:
theEvent = $('#calendar').fullCalendar('clientEvents', data.id)[0];
> theEvent.allDay
true
> theEvent._allDay
true
Run Code Online (Sandbox Code Playgroud)
然后,我使用编辑后的事件对象更新 fullCalendar:
calendar.fullCalendar('updateEvent', theEvent);
Run Code Online (Sandbox Code Playgroud)
编辑完成后,该事件将显示在日历中12a显示在事件标题之前。
我可以追踪到mutateEventfullCalendar 中的函数,该函数似乎在以下条件下覆盖我的设置:
// current values are:
// event.allDay: true
// oldAllDay: true
// newStart: Moment object - Mon Jan 19 2015 00:00:00 GMT-0600 (CST)
// newEnd: null
// detect new allDay
if (event.allDay != oldAllDay) { // if value has changed, use it
newAllDay = event.allDay;
} else { // otherwise, see if any of the new dates are allDay
newAllDay = !(newStart || newEnd).hasTime();
}
Run Code Online (Sandbox Code Playgroud)
我不认为我做错了什么,但我不能确定。有人对此有意见吗?请并谢谢。目前,我无法升级到更新的版本,因为此版本 (2.0.2) 似乎与我的客户选择的 Ace Admin Bootstrap 主题有些关联。
或者,我希望能够只允许全天事件,这样我将来就不必担心这个问题。
虽然这并不能真正解决问题,但这个答案解决了我的问题。
只需将 fullCalendar timeFormat 属性设置为“”即可。就我而言,我只参加全天活动,所以我永远不需要时间。
http://fullcalendar.io/docs/text/timeFormat/
$('#calendar').fullCalendar({
events: [
{
title: 'My Event',
start: '2010-01-01T14:30:00',
allDay: false
}
// other events here...
],
timeFormat: ''
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2300 次 |
| 最近记录: |