有没有办法根据下拉列表过滤事件?我试过了:
events: '/Controller/action?id='+id,
$("#drop").change(function () {
id = $('#drop').val();
$('#calendar').fullCalendar('refetchEvents');
但控制器看不到新 ID。关于将参数传递给 events(( 方法的任何建议?
您在初始化日历时将'/Controller/action?id='+id
的结果作为事件源提供给日历。 例如,您传入/Controller/action?id=3
,例如。该代码已运行,并且不会再次运行。fullCalendar 将该静态字符串存储为事件源的 URL。它以后不会关注"id"的值。
解决此问题的最简单方法可能是使用自定义事件源,如 https://fullcalendar.io/docs/event_data/events_function/:
//declare the calendar with a custom "events" functions
$("#calendar").calendar({
//..all your calendar options, and then the events:
events: function( start, end, timezone, callback ) {
$.ajax({
//whatever ajax parameters you need, but make sure:
url: /Controller/action,
data: { "id": $('#drop').val(), "start": start.format("YYYY-MM-DD"), "end": end.format("YYYY-MM-DD") }
});
}
});
$("#drop").change(function () {
$('#calendar').fullCalendar('refetchEvents');
});
这样,当调用"refetchEvents"时,它会运行您作为"events"参数传递的函数,该函数可以在该时刻动态查找下拉列表的值。
请注意,我还向数据添加了"开始"和"结束"参数,因为事件源应该筛选日历上实际显示的日期返回的事件,否则每次视图或日期更改时,您最终都会返回所有事件。