在calendarDay-View中过滤事件的Fullcalendar问题(仅工作一次,然后不再存在事件)

时间:2017-06-21 10:22:51

标签: events filter fullcalendar

我遇到过滤事件的问题:

  • 我在agendaDay-View
  • 中使用fullcalender
  • 我使用下拉列表选择驱动程序
  • 我将名称(它是event-object的属性)与所选值进行比较 (这部分还可以)

然后,

  • 我删除了所有活动(.fullCalendar('removeEvents');
  • 添加特定事件

  • (使用renderEvents添加目前无法正常工作)

  • 现在我的问题出现了:

  • 然而,当我第一次使用它时,当我选择另一个“驱动程序”时,事件就会消失,因为之前有'removeEvents' - Action。

那么,我怎样才能解决这个问题,我只能显示已过滤的事件并保持其他事件(所有事件的实际情况)再次过滤第二次,第三次?

$('#' + id).fullCalendar('refetchEvents');

是第一个想法,然而,它带来了所有后退和选定的问题加倍(等等)。

我很感激每一个提示。

1 个答案:

答案 0 :(得分:0)

好的我认为您可以使用fullCalendar的eventRender功能解决您的问题。

  

该函数也可以返回false以完全取消事件的呈现。

来自events.json的活动应该有像' driver_id'这样的属性。

我会选择字段而不是下拉列表,选项键是驱动程序ID,值 - 名称或其他。让我们说它的id是' driver_select'。

然后渲染这样的事件:

$('#calendar').fullCalendar({
    //...
    eventRender: function(event, element) {
        //driver select should have default value assigned or else no events will be rendered
        if ($("#driver_select").val() !== event.driver_id) {
             return false; //do not render other driver events
        }
    }
    //...
});

处理选择更改以更新

$("#driver_select").off('change').on('change', function() {
     $("#calendar").fullCalendar( 'refetchEvents' );
});

另一种方法是在时间轴中显示所有驱动程序。为此,您可以使用FullCalendar Scheduler