全日历重复事件
Fullcalendar Repeating Events
我正在使用全日历,并且想在 8 月到 11 月的每个月(星期一)重复一次活动。我已经能够重复该事件,但该事件在一周的每个星期一在一个月内重复四次 - 而我需要它在开始日期后的第一个星期一重复一次。以下日期范围与 DOW(星期几)参数一起传递。
var repeatingEvents = [{
title:"My repeating event",
id: 1,
start: '10:00',
end: '14:00',
dow: [ 1, 4 ],
ranges: [{ //repeating events are only displayed if they are within at least one of the following ranges.
start: moment().startOf('week'), //next two weeks
end: moment().endOf('week').add(7,'d'),
},{
start: moment('2015-02-01','YYYY-MM-DD'), //all of february
end: moment('2015-02-01','YYYY-MM-DD').endOf('month'),
},/*...other ranges*/],
},/*...other repeating events*/];
有什么方法可以让我每个月重复一次,运行 它从开始日期到结束日期?任何帮助将不胜感激
不幸的是,没有对这种事情的内置支持。如果你想像你展示的那样使用 "ranges" 数组,这是一个完全自定义的 属性 所以你需要一些自定义代码来处理它们。您似乎使用了与此答案相同的结构: Recurring Events in FullCalendar 。在这种情况下,您还需要该答案中显示的 "eventRender" 回调中的自定义代码,以便应用范围定义。
另一种解决方案是简单地更改您的服务器端代码,以便它为 fullCalendar 请求的日期范围内所需的每次重复事件生成一个单独的事件对象到 JSON。
如果您无法按照@ADyson 的建议在服务器端生成事件,您可以在Javascript 中完成。这会在指定的开始日期和结束日期之间找到该月的第一个星期一。
var id=0, event, events = [],
start=moment('2017-08-01'),
end=moment('2017-10-31');
while (start.isBefore(end)) {
id++;
if (start.day() === 'Monday') {
day = start.format('YYYY-MM-DD');
} else {
day = start.add(1, 'weeks').startOf('isoWeek').format('YYYY-MM-DD');
}
event = {
title:"My repeating event",
id: id,
start: day + ' 10:00:00',
end: day + ' 14:00:00',
}
events.push(event);
start.add(1, 'month').startOf('month');
}
然后在您的日历中使用您构建的事件数组:
$('#calendar').fullCalendar({
events: events,
// ...
我正在使用全日历,并且想在 8 月到 11 月的每个月(星期一)重复一次活动。我已经能够重复该事件,但该事件在一周的每个星期一在一个月内重复四次 - 而我需要它在开始日期后的第一个星期一重复一次。以下日期范围与 DOW(星期几)参数一起传递。
var repeatingEvents = [{
title:"My repeating event",
id: 1,
start: '10:00',
end: '14:00',
dow: [ 1, 4 ],
ranges: [{ //repeating events are only displayed if they are within at least one of the following ranges.
start: moment().startOf('week'), //next two weeks
end: moment().endOf('week').add(7,'d'),
},{
start: moment('2015-02-01','YYYY-MM-DD'), //all of february
end: moment('2015-02-01','YYYY-MM-DD').endOf('month'),
},/*...other ranges*/],
},/*...other repeating events*/];
有什么方法可以让我每个月重复一次,运行 它从开始日期到结束日期?任何帮助将不胜感激
不幸的是,没有对这种事情的内置支持。如果你想像你展示的那样使用 "ranges" 数组,这是一个完全自定义的 属性 所以你需要一些自定义代码来处理它们。您似乎使用了与此答案相同的结构: Recurring Events in FullCalendar 。在这种情况下,您还需要该答案中显示的 "eventRender" 回调中的自定义代码,以便应用范围定义。
另一种解决方案是简单地更改您的服务器端代码,以便它为 fullCalendar 请求的日期范围内所需的每次重复事件生成一个单独的事件对象到 JSON。
如果您无法按照@ADyson 的建议在服务器端生成事件,您可以在Javascript 中完成。这会在指定的开始日期和结束日期之间找到该月的第一个星期一。
var id=0, event, events = [],
start=moment('2017-08-01'),
end=moment('2017-10-31');
while (start.isBefore(end)) {
id++;
if (start.day() === 'Monday') {
day = start.format('YYYY-MM-DD');
} else {
day = start.add(1, 'weeks').startOf('isoWeek').format('YYYY-MM-DD');
}
event = {
title:"My repeating event",
id: id,
start: day + ' 10:00:00',
end: day + ' 14:00:00',
}
events.push(event);
start.add(1, 'month').startOf('month');
}
然后在您的日历中使用您构建的事件数组:
$('#calendar').fullCalendar({
events: events,
// ...