2014-07-06 13 views
11

Ich weiß nicht, ob es sich um eine Funktion oder einen Fehler handelt. Der Wert für den Ereignis-Ende wird jedoch auf null gesetzt, wenn allDay wahr ist. Dies ist die Funktion, wo das Ereignis aktualisiert:fullcalendar Rückgabe Ereignis Ende null, wenn allDay wahr ist

change: function (eventModel) { 


       var currEvId = eventModel.get('_id'); 
       var fcEvent = $("#calendar").fullCalendar('clientEvents', currEvId)[0] || {}; 
       console.log("end before update : " + fcEvent.end); 

       fcEvent.title = alvEventModel.get("title");     
       fcEvent.start = new Date(alvEventModel.get("start")); 
       fcEvent.end = new Date(alvEventModel.get("end")); 
       fcEvent.allDay = alvEventModel.get("allDay"); //true or false    
       this.el.fullCalendar('updateEvent', fcEvent); 

       console.log("start: " + fcEvent.start); 
       console.log("end: " + fcEvent.end);  

      }, 

Die Konsole zeigt

end before update : 1404896400000 
end after update: null 

Die fullcalendar Eigenschaft forceEventDuration auf true

this.$el.fullCalendar({ 
        lang: 'sv', 
        header: { 
         left: 'prev,next, today', 
         center: 'title', 
         right: 'month,agendaWeek,agendaDay', 
         ignoreTimezone: false 
        }, 
        forceEventDuration:true, 
        select: this.select, 
        selectable: true, 
        selectHelper: true, 
        editable: true, 


        disableDragging: true, 
        disableResizing: true, 

        aspectRatio: 2.5, 
        height: 600, 
        weekNumbers: true, 
        ... 
        }) 

setted die die Konsole zeigt

end before update : 1404864000000 
end after update: 1404813300000 

In diesem Fall ist das Rendering für das Ereignis ein Tag. Auch nach dem Update mit allDay auf false wird es weiterhin als ein eintägiges Ereignis angezeigt, bis die Ereignisse vom Server neu geladen werden. Ich denke, dass das Standardverhalten für allDay ein Start- und Enddatum haben muss. Aber ich bin mir nicht sicher, ob ich das Enddatum für null erklären soll. Vielleicht verstehe ich die Schönheit dieses Verhaltens nicht. Ich kann nicht für meine Ziele verwenden. Ich brauche ein Enddatum wie andere Kalender.

http://jsfiddle.net/Mr_Vertigo/k3RZX/1/ Und die Version v2.0.2

Antwort

1

Es muss nicht eingestellt werden, da Sie defaultAllDayEventDuration Option. Auch forceEventDuration gilt nicht für alle Tagesereignisse (see here)

Wenn Sie nicht Ende null sein wollen, dann ist es nur händisch eingestellt.

0

FullCalendar setzte immer das Ende auf null, wenn sich allDay ändert, wie Sie im Dokument sehen können. Line 1886

if (newAllDay != oldAllDay) { 
     // if allDay has changed, always throw away the end 
     clearEnd = true; 
} 
6

Dieses Problem ist nicht wegen der allday auf true gesetzt ist. Fullcalendar hat ein Problem, dass, wenn Startdatum und Enddatum identisch sind, es Enddatum einfach als null setzt.

Wenn das Enddatum des Ereignisses mit dem Startdatum identisch ist, wird es von FullCalendar als 1-tägig (mit einer leeren angenommenen Endzeit) angesehen, also ist es ein und dasselbe. Es speichert lieber weniger Daten als mehr. Überprüfen Sie also sorgfältig, ob Startdatum und Enddatum gleich sind.

Aber man konnte einfach tun dies als Behelfslösung:

eventClick: function(event) { 
    var start = event.start; 
    var end = event.end || start; 
} 

prüfen folgenden Link.

https://code.google.com/p/fullcalendar/issues/detail?id=1014

Verwandte Themen