大家好,我被困在这个日历上。 我需要在日历中显示我的活动。我只有一个事件显示正常,但当我还有两个事件时,我的事件存储在同一个日期!虽然他们有不同的约会。 我正在检索数据库中的may事件..
这是我的jQuery代码:
<script th:inline="javascript">
/*<![CDATA[*/
var events = [];
var myObject = new Object();
var theList = [[${appointments}]]
$(document).ready(function(){
for (var i = 0; i < theList.length; i++) {
myObject.title = theList[i].title;
myObject.start = new Date(theList[i].start);
myObject.requestNumber = theList[i].requestNumber;
myObject.locationId = theList[i].locationId;
myObject.arrivalTime = theList[i].arrivalTime;
myObject.admissionDate = new Date(theList[i].admissionDate);
myObject.procedureDate = "-";
myObject.admittingDiagnosisDesc = theList[i].admittingDiagnosisDesc;
myObject.description = "";
events.push(myObject);
}
$('#calendar').fullCalendar({
defaultView: 'month',
header: {
left: '',
center: 'title'
},
editable: false,
selectable: true,
events: events,
dayClick: function() {
// alert('a day has been clicked!');
},
eventClick: function(event, jsEvent, view) {
showAppointmentDetails(event)
}
});
});
/*]]>*/
这是我的输出(fullcalendar_events_are_stored_in_same_date):
事件的开始日期不同,但它们存储在同一日期。需要帮助......
答案 0 :(得分:0)
每次循环时都需要重新初始化myObject作为新对象,否则每次循环运行时都会用新值覆盖内存中的同一对象。
对象存储在数组中作为引用(而不是副本),因此当此数组传递给日历时,它会读取数组中的项并发现它们是相同的,因为它们都引用相同的源记忆中的物体。因此,为什么你的所有活动都在同一天。如果你检查它们,你会发现它们的所有属性都是相同的,而不仅仅是日期。
只需这样做:
for (var i = 0; i < theList.length; i++) {
var myObject = new Object(); //create a new object each time
myObject.title = theList[i].title;
myObject.start = new Date(theList[i].start);
myObject.requestNumber = theList[i].requestNumber;
myObject.locationId = theList[i].locationId;
myObject.arrivalTime = theList[i].arrivalTime;
myObject.admissionDate = new Date(theList[i].admissionDate);
myObject.procedureDate = "-";
myObject.admittingDiagnosisDesc = theList[i].admittingDiagnosisDesc;
myObject.description = "";
events.push(myObject);
}
http://jsfiddle.net/sbxpv25p/50/给出了一个有效的例子。
然而,说了这么多,为什么你真的需要那个for
循环并不是很清楚?我从代码中得到的印象是,无论如何,您的活动大部分都是正确的格式。除了description
和procedureDate
之外,您只需按下默认值,循环只是制作相同数据的精确副本并将其放入新数组中。
我认为您可以在“events”参数中直接向fullCalendar提供“theList”,并获得相同的结果。请参阅此示例:http://jsfiddle.net/sbxpv25p/51/