fullcalendar v.2事件数组与淘汰赛

时间:2016-06-15 12:59:19

标签: knockout.js fullcalendar

我正在使用淘汰赛,我从一个可观察的阵列中拉出事件。我的事件出现在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"
  },...

1 个答案:

答案 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);
  }