2017-06-14 1157 views
2

如何调整在日历上删除的fullcalendar事件的结束日期?我使用AngularJS的UI日历和fullcalendar调度-1.3.2,我有下面的函数来处理新接收到的事件收到的fullcalendar事件的设置结束日期失败,错误为

function eventReceive(event) { // called when a new event is received 
    console.log(event.start.format()); // 2017-06-14T12:00:00 
    console.log(event.end);    // null 
    event.end = moment(event.start).add(3600, 'seconds'); 
    console.log(event.end.format());  // 2017-06-14T13:00:00+00:00 
} 

当我把第一个事件,一切工作正常。当我放弃第二个事件时,会发生下面的错误。当我将结束日期增加0秒而不是3600(这意味着事件持续时间为0并且意义不大),则不会发生错误。

Uncaught TypeError: Cannot read property 'apply' of undefined 
at n.fb.time (fullcalendar.min.js:6) 
at r.d.internalApiVersion.o.isValidDate (scheduler.min.js:7) 
at r.d.internalApiVersion.o.spanToSegs (scheduler.min.js:7) 
at r.d.internalApiVersion.r.spanToSegs (scheduler.min.js:8) 
at r.eventSpanToSegs (fullcalendar.min.js:7) 
at r.eventRangeToSegs (fullcalendar.min.js:7) 
at Array.<anonymous> (fullcalendar.min.js:7) 
at Function.each (jquery.js:382) 
at r.eventsToSegs (fullcalendar.min.js:7) 
at renderFgEvents (fullcalendar.min.js:7) 
    fb.time @ fullcalendar.min.js:6 
    d.internalApiVersion.o.isValidDate @ scheduler.min.js:7 
    d.internalApiVersion.o.spanToSegs @ scheduler.min.js:7 
    d.internalApiVersion.r.spanToSegs @ scheduler.min.js:8 
    eventSpanToSegs @ fullcalendar.min.js:7 
    eventRangeToSegs @ fullcalendar.min.js:7 
    (anonymous) @ fullcalendar.min.js:7 
    each @ jquery.js:382 
    eventsToSegs @ fullcalendar.min.js:7 
    renderFgEvents @ fullcalendar.min.js:7 
    renderEvents @ fullcalendar.min.js:7 
    d.internalApiVersion.r.renderEvents @ scheduler.min.js:7 
    displayEvents @ fullcalendar.min.js:8 
    (anonymous) @ scheduler.min.js:6 
    d.internalApiVersion.X.whenResources @ scheduler.min.js:6 
    d.internalApiVersion.X.displayEvents @ scheduler.min.js:6 
    o @ fullcalendar.min.js:6 
    s @ fullcalendar.min.js:6 
    p @ fullcalendar.min.js:6 
    reportExternalDrop @ fullcalendar.min.js:8 
    reportExternalDrop @ scheduler.min.js:6 
    interactionEnd @ fullcalendar.min.js:7 
    trigger @ fullcalendar.min.js:7 
    handleInteractionEnd @ fullcalendar.min.js:7 
    handleInteractionEnd @ fullcalendar.min.js:7 
    endInteraction @ fullcalendar.min.js:7 
    f @ jquery.js:512 
    dispatch @ jquery.js:4435 
    r.handle @ jquery.js:4121 

我发现了一个类似的问题StackOverflow的how to get start and end date of external dragged and dropped event on fullcalendar但结束日期调整在下拉式处理,从而为每一滴水事件。此外,我觉得$(本)都不能正确使用AngularJS,因为$(本)。数据不是一个函数

UPDATE

另一个症状工作:调用updateEvent修改在事件发生后设定结束日期回null

function eventReceive(event) { // called when a new event is received 
    // here everything as above 
    console.log(event.start.format()); // 2017-06-14T12:00:00 
    console.log(event.end);    // null 
    event.end = moment(event.start).add(3600, 'seconds'); 
    console.log(event.end.format());  // 2017-06-14T13:00:00+00:00 

    // here additional test code 
    event.title = 'TEST'; 
    uiCalendarConfig.calendars.myCalendar.fullCalendar('updateEvent', event); 
    console.log(event.title);    // TEST, ok 
    console.log(event.end);    // null, not ok 
} 
+0

我看到了同样的问题。我把事件对象放在html元素的data-event属性中。在外部事件的下拉回调中,结束值没问题,但是在eventReceive中,只有在第二次拖动相同事件后,它才会返回为null。我正在使用FullCalendar版本3.4.0。 – Jonathan

回答

0

我想通了。问题是当我第一次将外部事件拖放到日历上时,我正好在html元素上设置了data-duration属性。将其从日历中删除并随后将其添加回来后,我没有正确设置该数据持续时间属性。该属性是驱动eventReceive回调中结束日期的原因。

检查大约持续数据属性的文档:https://fullcalendar.io/docs/dropping/droppable/

相关问题