我正在使用淘汰赛,我从一个可观察的阵列中拉出事件。我的事件出现在console.log中,但日历不会呈现。如果我从console.log复制数组并对其进行硬编码,则日历呈现正常。有什么不同。我该如何解决这个问题?
viewModel.calendarViewModel = new ko.fullCalendar.cModel({
events: cModel.events,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: false,
viewDate: viewModel.viewDate
}, viewModel);
来自console.log的片段:
"calendarViewModel": {
"events": [
{
"id": 1304,
"title": "jjf2017_7_9-10",
"start": "2017-07-08",
"end": "2017-07-10",
"Location": "Guest House",
"backgroundColor": "Color",
"RoomNumber": "203"
},
{
"id": 1298,
"title": "JulyTest",
"start": "2016-07-09",
"end": "2016-07-18",
"Location": "Guest House",
"backgroundColor": "Color",
"RoomNumber": "205"
},
{
"id": 1299,
"title": "Julytest2",
"start": "2016-07-09",
"end": "2016-07-14",
"Location": "Guest House",
"backgroundColor": "Color",
"RoomNumber": "209"
},...
答案 0 :(得分:0)
如果您的数据源发生了变化,您可以尝试using the events property as a function instead of an array,然后在观察到数据更改时使用fullCalendar('refetchEvents')。这是我从Meteor应用程序中获得的一个工作片段。每当Mongo游标我观察到变化时,我都会调用.fullCalendar('refetchEvents')以便刷新日历显示。在下面的例子中,我从Mongo集合中获取一系列约会,进行一些处理,然后使用'回调',这是fullCalendar将事件放在日历上的方式。当数据源发生变化时(例如,通过表单添加事件),我使用表单成功回调中的fullCalendar('refetchEvents')来确保呈现更改。 **你可能只能使用'refetchEvents'而不是使用函数结构,但我没有在我的情况下测试过。
events(start, end, timezone, callback) {
const data = Appointments
.find()
.fetch() // <-- here's the array
// doing some array processing)
.map(appointment => {
appointment.editable = ! isPast(appointment.start);
return appointment;
});
if (data) {
// fullCalendar parses the data and renders it on the cal.
callback(data);
}