1

我正在使用http://arshaw.com/fullcalendar/,我想根据页面上的各种复选框动态过滤显示的事件。我正在使用 ajax 源(过滤器作为参数传递)来收集数据。

我遇到的问题是,一旦我加载日历,我就无法在我的一生中(或 stackoverflow 搜索)弄清楚如何更新参数。似乎一旦加载日历,这些参数就会“烘焙”并且无法更改。

我已经尝试了 addEventSource、removeEventSources、removeEvents、refetchEvents 等的每一种组合(如此处推荐:rerenderEvents / refetchEvents 问题),但仍然没有运气。

我目前的解决方案是每次更新过滤器时重新启动整个 .fullCalendar ——这也会导致大量问题,而且确实不是一个优雅的解决方案。

关于更简单的方法的任何想法?每次使用更新的参数重新获取源应该是自动的。我真的很感谢你的帮助。

4

2 回答 2

0

在我的代码中,我确实喜欢这样:

我有一个带有日历 ID 的数组要显示,当用户选中或取消选中复选框时我会更新它。

在 fullCalendar 初始化中,我检索所有事件并使用此函数过滤它们:

function fetchEvent( calendars, events) {

    function eventCorrespond (element, index, array) {

          return $.inArray(element.calendarid, calendars) > -1;

    }

return  events.filter(eventCorrespond);
}

$('#calendar').fullCalendar({
    events: function(start, end, callback) {

    //fetch events for date range  on the server and retrieve an events array
    //update calendars, your array of calendarsId 

    //return a filtered events array
        callback(fetchEvent(calendars , events));
    }
});

当用户选中或取消选中复选框时,我会:

$('#calendar').fullCalendar('refetchEvents');
于 2013-05-25T16:36:17.677 回答
0

对我有用的解决方案是:

$('#calendar').fullCalendar('removeEventSource', 'JsonResponse.ashx?technicans=' + technicians);
technicians = new_technicians_value;
$('#calendar').fullCalendar('addEventSource', 'JsonResponse.ashx?technicans=' + technicians);

在“addEventSource”之后,事件将立即从新源中获取。

完整答案在这里https://stackoverflow.com/a/36361544/5833265

于 2016-04-01T16:50:25.370 回答