FullCalendar-更改月份时不会触发丢弃

时间:2014-08-07 20:39:54

标签: javascript jquery asp.net-mvc fullcalendar

我简直不敢相信这个问题。这让我疯了。我使用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: 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调用,并且在成功时我重新获取事件以便我可以获取数据库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) {}
                },

这很好用,但如果用户从当前月份开始移动,那么外部事件就不会拖动,也不会触发掉落回调...我不知道出了什么问题...

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最后,我将FullCalendar版本从2.1.0_BETA1 / BETA2回滚到v2.0.2,现在正在按预期工作。

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