我希望能够拖动外部元素,并将它们放到我的完整日历上。在drop回调中,我请求一个返回事件原因类型的计算返回时间(例如:"2012-03-03 08:00:00")的页面。接收日期并将其应用于事件的.end属性。事件被添加到日历,但事件默认为2小时长度,导致事件具有错误的结束时间(应延伸到下一个"08:00")。如果我切换到周视图,则会显示正确的结束时间,如果我切换回来,也会显示正确的结束时间。此外,如果我将具有错误的siplayed结束时间的事件拖到日历上的新位置,它将以正确的结束时间("08:00")重新呈现。
那么,有没有人知道如何模拟dragEventStop或正确地重新呈现它所需的任何东西?
代码:
drop: function(date, allDay) { // this function is called when something is dropped
// retrieve the dropped element's stored Event Object
var originalEventObject = jQuery(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = jQuery.extend({}, originalEventObject);
// assign it the date that was reported
copiedEventObject.start = date;
//Fetch endtime from loadReturntime
var opt = {session: '<%= GetVariable('session') %>', cmd: 'hv_get_returntime', reasoncode_id: ''+jQuery(this).attr('custom:reasoncode')+'', fromtime: ISODateString(date)};
jQuery.get('engine.wsc', opt, function(data) {
copiedEventObject.end = new Date(data);
});
copiedEventObject.allDay = false;
// render the event on the calendar
jQuery('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
},
发布于 2012-03-05 14:37:46
我发现答案是jQuery.get()的回调是在(当然)函数的其余行删除之后处理的。因此,在处理回调之前呈现事件,并将结束日期设置为正确的日期。解决方案是在get()的回调中添加渲染。例如:
drop: function(date, allDay) { // this function is called when something is dropped
// retrieve the dropped element's stored Event Object
var originalEventObject = jQuery(this).data('eventObject');
// we need to copy it, so that multiple events don't have a reference to the same object
var copiedEventObject = jQuery.extend({}, originalEventObject);
var opt = {session: '<%= GetVariable('session') %>', cmd: 'hv_get_returntime', reasoncode_id: ''+jQuery(this).attr('custom:reasoncode')+'', fromtime: ISODateString(date)};
jQuery.get('engine.wsc', opt, function(data) {
copiedEventObject.end = new Date(data);
// assign it the date that was reported
copiedEventObject.start = date;
copiedEventObject.allDay = allDay;
// render the event on the calendar
jQuery('#calendar').fullCalendar('renderEvent', copiedEventObject, true);
});
},
https://stackoverflow.com/questions/9529883
复制相似问题