FullCalendar事件JSON提要具有略微不同的响应格式

时间:2016-07-19 14:52:42

标签: javascript fullcalendar

我正在使用FullCalendar,这就是我初始化它的方式:

$('#calendar').fullCalendar({
    events: $('#calendar').data('source')
});

问题是响应不是FullCalendar所期望的格式,因为所有结果集都嵌套在数据下,即

{
    "data":
    [
        {
            "title": "Event1",
            "start": "2011-04-04"
        },
        {
            "title": "Event2",
            "start": "2011-04-04"
        }
    ]
}

有没有办法可以提供自定义回调,使其使用结果的数据元素作为事件源?

我试过这个

$('#calendar').fullCalendar({
    events: function(start, end, timezone, callback) {
        var url =  $('#calendar').data('source');
        $.get(url, {start: start, end: end, timezone: timezone})
        .done(function( data ) {
            callback(data.data);
        });
    }
}); 

但我得到的是一个JS错误说

  

moment.min.js:22未捕获TypeError:无法读取属性'_calendar'   未定义的

1 个答案:

答案 0 :(得分:2)

我解决了我的问题。错误来自FulLCalendar,而不是Moment.js库

$('#calendar').fullCalendar({
    events: function(start, end, timezone, callback) {
        $.ajax({
            url: $('#calendar').data('source'),
            dataType: 'json',
            data: {
                start: start.format("YYYY-MM-DD"),
                end: end.format("YYYY-MM-DD")
            },
            success: function(result) {
                var events = [];
                result.data.forEach(function(element) {
                    events.push({
                        title: element.title,
                        start: element.start 
                    });
                });

                callback(events);
            }
        });
    }
});