removeevents初始化后的fullcalendar不起作用

时间:2016-06-02 19:25:25

标签: javascript jquery fullcalendar

我正在使用fullcalendar,当我渲染事件时(我通过模态添加事件),我使用Ajax将其插入数据库中,然后我得到了insert_id和我试图将id归因于这样的事件:

eventAfterRender:function( event, element, view ) { 
        $(element).attr("id","event_id_"+event._id);
}

但它没有用,所以,当我以模态提交时,最后我会调用此函数:

function getFreshEvents(){
        $('#calendar').fullCalendar('removeEvents');

        $('#calendar').fullCalendar({
            //removeEvents,
            eventSources: [
            {
                events: {
                    url: root_url + 'agenda/LoadEvenements',
                    type: 'GET',
                    data: {
                        start:moment( $("#calendar").fullCalendar("getView").start ).format("YYYY-MM-DD"),
                        end:moment( $("#calendar").fullCalendar("getView").end ).format("YYYY-MM-DD")
                    },
                    error: function() {
                        alert('Error');
                    }
                }
            }]
        });
    }

但这没有用!!

有一件事情很好:

function getFreshEvents(){
        $('#calendar').fullCalendar('removeEvents');
        $.ajax({
            url: root_url + 'agenda/LoadEvenements',
            type: 'POST', // Send post data
            async: false,
            success: function(s){
                if(s.vide != true){
                    json_events = s;
                }
            }
        });
        $('#calendar').fullCalendar('addEventSource', json_events);
    }

但是正如你所看到的,我并没有开始和结束这些参数。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你不需要发送开始&结束日期明确。 fullcalendar会在当前视图的开始和结束时间自动为您完成。如果只有一个来源填满您的日历,您也可以使用事件而不是eventSource。

所以我会那样做:

function getFreshEvents(){
    $('#calendar').fullCalendar('removeEvents');

    $('#calendar').fullCalendar({
            events: root_url + 'agenda/LoadEvenements',               
    });
}

或者如果你坚持使用eventSource:

function getFreshEvents(){
    $('#calendar').fullCalendar('removeEvents');

    $('#calendar').fullCalendar({
         eventSources: [
             'root_url + 'agenda/LoadEvenements'                
         ]             
    });
}

尽管两个代码部分都会按照您的意愿执行,但我会采用不同的方法。每当添加新事件时重新加载所有事件都没有意义。因此,当您创建事件并将其发送到服务器时,也可以自行将其添加到具有renderEvent功能的日历中。您可以将stick选项设置为true,以便在单击“上一个”和“下一个”时不会丢失该事件。

希望有所帮助。