Fullcalendar重新获取事件回调

时间:2014-12-23 14:22:19

标签: jquery angularjs angularjs-directive fullcalendar jquery-callback

目前正在使用fullcalendar.io

在文档中,它有calendar.fullCalendar(' refetchEvents'),用于从服务器重新获取所有事件。

简而言之,我希望完成calendar.fullCalendar(' refetchEvents')请求,然后向我发回一个回调让我知道。我希望在继续执行某些任务之前下载所有事件。

我该怎么做?

3 个答案:

答案 0 :(得分:5)

通过在成功的http帖子之后执行重新获取事件来解决它,如下所示

  Service.insert(event).
            success(function (data, status, headers, config) {

                calendar.fullCalendar('refetchEvents');

            }).
            error(function(data, status, headers, config) {
                alert('error');
            });

答案 1 :(得分:2)

我已经从FullCalendar的demos文件夹中更改了basic-views.html。我添加了

        ,
        eventAfterAllRender: function (view) {
            console.log('eventAfterAllRender');
            console.log(view);
        }

到日历选项列表。它会在初始事件加载后以及每个$('#calendar')之后触发.fulcCalendar(' refetchEvents');

完整的演示代码:

<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<link href='../fullcalendar.css' rel='stylesheet' />
<link href='../fullcalendar.print.css' rel='stylesheet' media='print' />
<script src='../lib/moment.min.js'></script>
<script src='../lib/jquery.min.js'></script>
<script src='../fullcalendar.min.js'></script>
<script>

    $(document).ready(function() {

        $('#calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,basicWeek,basicDay'
            },
            defaultDate: '2014-11-12',
            editable: true,
            eventLimit: true, // allow "more" link when too many events
            events: [
                {
                    title: 'All Day Event',
                    start: '2014-11-01'
                },
                {
                    title: 'Long Event',
                    start: '2014-11-07',
                    end: '2014-11-10'
                },
                {
                    id: 999,
                    title: 'Repeating Event',
                    start: '2014-11-09T16:00:00'
                },
                {
                    id: 999,
                    title: 'Repeating Event',
                    start: '2014-11-16T16:00:00'
                },
                {
                    title: 'Conference',
                    start: '2014-11-11',
                    end: '2014-11-13'
                },
                {
                    title: 'Meeting',
                    start: '2014-11-12T10:30:00',
                    end: '2014-11-12T12:30:00'
                },
                {
                    title: 'Lunch',
                    start: '2014-11-12T12:00:00'
                },
                {
                    title: 'Meeting',
                    start: '2014-11-12T14:30:00'
                },
                {
                    title: 'Happy Hour',
                    start: '2014-11-12T17:30:00'
                },
                {
                    title: 'Dinner',
                    start: '2014-11-12T20:00:00'
                },
                {
                    title: 'Birthday Party',
                    start: '2014-11-13T07:00:00'
                },
                {
                    title: 'Click for Google',
                    url: 'http://google.com/',
                    start: '2014-11-28'
                }
            ],
            eventAfterAllRender: function (view) {
                console.log('eventAfterAllRender');
                console.log(view);
            }
        });
        $('#calendar').fullCalendar( 'refetchEvents' );
    });

</script>
<style>

    body {
        margin: 40px 10px;
        padding: 0;
        font-family: "Lucida Grande",Helvetica,Arial,Verdana,sans-serif;
        font-size: 14px;
    }

    #calendar {
        max-width: 900px;
        margin: 0 auto;
    }

</style>
</head>
<body>

    <div id='calendar'></div>

</body>
</html>

答案 2 :(得分:2)

试试这个


 $('#calendar').fullCalendar('destroy');
$('#calendar').fullCalendar({


                defaultView: 'month',
                editable: true,
                //eventLimit: true, // allow "more" link when too many events

                events: myevents,


            });