簡體   English   中英

使用JQuery的FullCalendar雙重事件

[英]FullCalendar Doubling Events using JQuery

您好,我在使用完整日歷庫時遇到問題。

僅當我按下自定義的“過濾器”按鈕並更改月份時,事件才會繼續加倍。

當我調用過濾器時,我將刪除所有事件,並使用過濾后的結果重新填充。 當我按下左/右按鈕時,該問題看起來像它再次調用事件填充並添加事件。 我想禁用它或對其進行重做。

這是正在發生的事情: 在此處輸入圖像描述

日歷代碼:

function calendarView()
{
    //$('#calendar').fullCalendar('removeEvents')

    var url_str = "/Calendar/GetCalendarEvents"
    $('#calendar').fullCalendar({
        header: {
            left: 'prev,next, today',
            center: 'title',
            right: 'month,agendaWeek,agendaDay'
        },

        fixedWeekCount: true,
        eventLimit: 4,
        events: url_str,
        eventClick: function (calEvent, jsEvent, view)
        {
            editable: false;
            var currentDate = new Date();
            currentDate.setHours(0, 0, 0, 0);
            if (calEvent.start >= currentDate - 1)
                openEditVisit(calEvent.id)
        }
    });

};

篩選器按鈕呼叫代碼

$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/Calendar/GetCalendarEvents",
        data: j,
        async: false,
        dataType: 'json',
        success: function (data) 
        {
            $('#calendar').fullCalendar('removeEvents')
            $('#calendar').fullCalendar('addEventSource', data)

        },
        error: function (xhr, err) {
            alert("ERROR! - readyState: " + xhr.readyState + "<br/>status: " + xhr.status + "<br/>responseText: " + xhr.responseText);
        }
    });

您有一個問題,因為既然您已經將事件定義為JSON提要( events: url_str ),那么無論何時更改視圖,它都將獲取沒有過濾器選項的那些事件。 這是除了你以前添加作為一個單獨的事件源過濾的事件。

因此,您可以使用的更好的解決方案是利用內置的事件即功能功能,並讓您的自定義功能考慮UI中的過濾器選項,並將其與開始/結束一起發送到服務器。 fullCalendar提供的日期。 這樣可以確保當您更改視圖或日期時,返回的結果會考慮您的過濾條件,並且不會重復事件。

同時,您的額外過濾器按鈕可以在單擊時僅調用“ refetchEvents”,以從主事件源(已定義並使用過濾器選項)刷新。

參見https://fullcalendar.io/docs/event_data/events_function/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM