FullCalendar-更改月份时不会触发Drop



真不敢相信居然没人问这个问题。这快把我逼疯了。我使用FullCalendar让用户将外部事件放到日历中。我遵循众所周知的方法:

  $('#external-events div.external-event').each(function () {
                var eventObject = {
                    type: 2,
                    id: $(this).attr("data-id"),
                    title: $(this).attr("data-name"),
                    duration: $(this).attr("data-duration"),
                    guid: $(this).attr("data-guid"),
                    color: $(this).attr("data-color")
                };
                // store the Event Object in the DOM element so we can get to it later
                $(this).data('eventObject', eventObject);
                // make the event draggable using jQuery UI
                $(this).draggable({ zIndex: 999, revert: true, revertDuration: 0 });
            });

我的日历是这样配置的(drop event):

  drop: function(date) {
   // retrieve the dropped element's stored Event Object
   var originalEventObject = $(this).data('eventObject');
   // we need to copy it, so that multiple events don't have a reference to the same object
    var copiedEventObject = $.extend({}, originalEventObject);
  // assign it the date that was reported
    copiedEventObject.start = date.format();
  // render the event on the calendar
  //$('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
   $.ajax({
       async: false,
       url: '@Url.Action("AddWorkoutToPlan", "Planning")',
       data: { 'planId': planId, 'workoutId': copiedEventObject.id, 'date': date.format() },
       success: function(data) {
          $('#calendar').fullCalendar('refetchEvents'); 
         }
          });
                },

正如你所看到的,我不渲染事件,我只是做一个ajax调用和成功,我重新获取事件,所以我可以得到DB id,以防用户想要删除它。

我是这样得到我的事件的:

  events: {
                    url: '@Url.Action("GetPlannedActivities", "Planning")',
                    data: function() { return { planId: '@Model.Id' } },
                    beforeSend: function(xhr, opts) {
                        if (!$("#selectedPlan").val()) {
                            xhr.abort();
                            unblockContainer($("#calendar"));
                        }
                    },
                    success: function(data) {}
                },

这工作得很好,但如果用户从当前月份移动,那么外部事件不会拖动也不会触发拖放回调…我不知道哪里出错了…

任何想法?

最后我将FullCalendar版本从2.1.0_BETA1/BETA2回滚到v2.0.2,现在可以正常工作了。

所以我猜这是新版本中使用DIVS而不是TABLES的错误。

相关内容

  • 没有找到相关文章

最新更新