我在过滤事件时遇到问题:
- 我在议程日视图中使用全日历
- 我使用下拉列表选择驱动程序
- 我将名称(它是事件对象的属性(与所选值进行比较(这部分还可以(
然后
- 我删除所有事件 (
.fullCalendar('removeEvents');
( -
添加特定事件
-
(使用渲染事件添加目前无法正常工作(
-
现在我的问题出现了:
-
然而,当我选择另一个"驱动程序"时,它第一次起作用,由于之前的"removeEvents"-Action,事件消失了。
该如何解决这个问题,我只能显示过滤后的事件并保持其他(实际上是所有事件(再次过滤第二次、第三次 n- 时间?
$('#' + id).fullCalendar('refetchEvents');
是第一个想法,然而,它把所有的东西都带回来了,选定的问题加倍了(等等(。
我很感谢每一个提示。
我认为您可以使用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。