1

我在 Rails 应用程序中使用 arshaw.com/fullcalendar/。真的很棒!!

当用户将事件从一天移动(拖动)到另一天时,我正在使用 eventDrop 更新事件表。这适用于拖动具有开始和结束时间的事件。但是,当您拖动全天事件时,它不会更新表格。

这是我的表格更新代码:

  eventDrop: (event, dayDelta, minuteDelta, allDay, revertFunc) ->
    updateEvent(event);

  eventResize: (event, dayDelta, minuteDelta, revertFunc) ->
    updateEvent(event);


updateEvent = (the_event) ->
  $.update "/events/" + the_event.id,
    event:
      title: the_event.title,
      starts_at: "" + the_event.start,
      ends_at: "" + the_event.end,
      description: the_event.description

有任何想法吗?

谢谢!

4

1 回答 1

0

我解决这个问题的简单方法是使用小技巧(我不喜欢技巧,但我认为这是需要的)。

我所做的是,在 allDay 事件创建时,我以编程方式添加该事件的结束时间(开始后 1 小时),确保所有事件始终具有结束时间:

select: function (start, end, allDay, jsEvent, view)
    {
        var title = prompt('event title:');

        if (title)
        {
            var allDay = allDay ? true : false;
            if (allDay)
            {   // this ensures that allDay tasks have end time if they're to be changed to non allDay tasks
                end.setHours(end.getHours() + 1);
            }

            createEvent(
            {
                title: title,
                start: start,
                end: end,
                allDay: allDay
            });
        }
        $calendar.fullCalendar('unselect');
    },

这是 createEvent 函数:

function createEvent(event)
{
    $spinner.show();
    $.create(
        "/tasks",
        {
            "task":
            {
                name: event.title,
                starts_at: "" + event.start,
                ends_at: "" + event.end,
                all_day: event.allDay
            }
        },
        function (response)
        {
            $spinner.hide();
            var id = response.id;
            $calendar.fullCalendar('renderEvent',
            {
                id: id,
                title: event.title,
                start: event.start,
                end: event.end,
                allDay: event.allDay ? true : false
            },
            true // make the event "stick"
            );
        }
    );
}
于 2012-12-23T14:57:14.800 回答