Fullcalendar触发多个源

时间:2016-02-02 20:27:22

标签: fullcalendar

我正在使用fullcalendar v2,并且可以从ul-li菜单中选择事件的来源。初始呼叫使用来自第一个li的链接,我可以浏览日历中的所有月份。当我使用第二个链接时,fullcalendar从前一个链接以及新链接中检索事件。在每个新选择中,fullcalendar会记住事件源。我怎么能禁用它?这是我的代码:

$("#chgBranch li").on("click", function (event) {
    event.preventDefault(); // To prevent following the link (optional)

    var urlEvents = $(this).children('a').attr('href');
    var branchName = $(this).children('a').text();

    $('#calendarSchedules').fullCalendar('removeEvents');
    $('#calendarSchedules').fullCalendar('removeEventSource');

    // refill calendar
    fillEvents(urlEvents, branchName);
});

function fillEvents(urlEvents, branchName) {

    // change title of potlet box
    var newTitle = '<i class="fa fa-calendar"></i> Available schedules for: ' + branchName;
    $('#calendarCaption').html(newTitle);

    $('#calendarSchedules').fullCalendar({
        year: <?= $yy ?>,
        month: <?= --$mm ?>, // javascript month is 0 based
        date: 1,
        header: {
            left: '',
            center: 'title',
            right: 'prev,next,today'
        },
        defaultView: 'month',
        firstDay: 1, // monday
        editable: false,
        slotEventOverlap: false,
        selectable: true,
        selectHelper: true,
        dayRender: function (view, element) {
            $('.fc td.fc-sun').css('background', '#E7EFEF');
            $('.fc td.fc-sat').css('background', '#E7EFEF');
        },
        eventClick: function (event) {
            $('#dueTime').show();
            $('#duedate').val(moment(event.start).format('YYYY-MM-DD'));
            $('#duetime').val(moment(event.start).format('HH:mm:ss'));
            $('#isPartitionable').val(event.partitionable); // user clicked on partitionable dispo or not
        }
    });

    $('#calendarSchedules').fullCalendar('addEventSource', urlEvents);
}

// load first branch item
$('#chgBranch li a:first').trigger('click');

2 个答案:

答案 0 :(得分:1)

我认为你也应该破坏你的日历。因为您正在初始化fullcalendar,所以源上的每个时间都从ul-li更改。

尝试下面一个。

$("#chgBranch li").on("click", function (event) {
    event.preventDefault(); // To prevent following the link (optional)

    var urlEvents = $(this).children('a').attr('href');
    var branchName = $(this).children('a').text();

    $('#calendarCaption').fullCalendar( 'destroy' );

    // refill calendar
    fillEvents(urlEvents, branchName);
});

这肯定会奏效。我在当地尝试并且工作正常。

答案 1 :(得分:0)

我用以下方法尝试了它也可以正常工作,但@Chintan方法也很好:

$('#calendarSchedules').fullCalendar('removeEvents');
$('#calendarSchedules').fullCalendar('removeEventSource', storedEventSource);

我会在呈现日历后将事件源存储在隐藏字段中。