如何使用json为fullcalendar的事件对象传递动态参数?

bhu*_*han 2 fullcalendar

我使用带有json feed的fullcalendar,代码如下

$('#calendar').fullCalendar({
        theme: true,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        editable: true,
        events: {
            url: '/EventInfo/GetEventsByEmployee',
            cache: false,
            lazyFetching:true,
            type: 'POST',
            data: {
                empId: $('#eventownerId').val()
            },
            error: function () {
                alert('there was an error while fetching events!');
            },               
        },
        dayClick: function (date, allDay, jsEvent, view) {
            displayDayEvents(date, allDay, jsEvent, view);
        },
        eventRender: function (event, element) {
            element.find('.fc-event-time').hide();
            element.attr('title', event.tip);
        }
    });
Run Code Online (Sandbox Code Playgroud)

在这里,我通过数据字段将下拉控件的选定值传递为"empId:$('#eventownerId').val()".它在页面加载时返回正确的数据.现在,当用户从下拉列表中选择选项时,我想重新加载日历数据.为此我使用了以下代码

$('#eventownerId').change(function (e) {            
        $('#calendar').fullCalendar('removeEvents');
        $('#calendar').fullCalendar('refetchEvents');            
    });
Run Code Online (Sandbox Code Playgroud)

但是,refetch使用旧数据调用json方法(即下拉控件的初始值),甚至选择的下拉值也已更改.如何通过下拉控件的当前值并重新加载fullcalendar?

bhu*_*han 8

我通过调用destroy of fullcalendar来解决问题,如下所示

$('#dropdownlistId').change(function (e) {            
        $('#calendar').fullCalendar('destroy');           
        RenderCalendar($(this).val());
    });
Run Code Online (Sandbox Code Playgroud)

和RenderCalendar()是

function RenderCalendar(eId) {
    $('#calendar').fullCalendar({
        theme: true,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },
        editable: true,
        events: {
            url: '/EventInfo/GetEventsByEmployee',
            cache: true,
            type: 'POST',
            data: {
                empId: eId
            },
            error: function () {
                alert('there was an error while fetching events!');
            },
        },
        dayClick: function (date, allDay, jsEvent, view) {
            displayDayEvents(date, allDay, jsEvent, view);
        },
        eventRender: function (event, element) {
            element.find('.fc-event-time').hide();
            element.attr('title', event.tip);
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

使用这个我管理了问题,但不确定这是否正确.即摧毁和重新创建日历.我仍在寻找正确的方法