我简直不敢相信这个问题。这让我疯了。我使用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) {}
},
这很好用,但如果用户从当前月份开始移动,那么外部事件就不会拖动,也不会触发掉落回调...我不知道出了什么问题...
有什么想法吗?
答案 0 :(得分:0)
最后,我将FullCalendar版本从2.1.0_BETA1 / BETA2回滚到v2.0.2,现在正在按预期工作。
所以我猜这是新版本中使用DIVS而不是TABLES的错误。