微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Fullcalendar calendar.getEvents() 不返回刚刚加载的 JSON 事件源

如何解决Fullcalendar calendar.getEvents() 不返回刚刚加载的 JSON 事件源

我在加载函数中使用 calendar.getEvents() 时遇到问题。在 v3 中,代码如下所示:

$('##calendar').fullCalendar({
...,events: {
    url: 'myurl',...
},loading: function(bool) {
$('##loading').toggle(bool);
if (!bool) {
    var eventview = $('##calendar').fullCalendar('getView');
    var loadedEvents = $('##calendar').fullCalendar('clientEvents',function(events){ return (moment(events.start).format('YYYY-MM-DD') >= eventview.start.format('YYYY-MM-DD')  && eventview.end.format('YYYY-MM-DD') > moment(events.start).format('YYYY-MM-DD'))});
    for (i = 0; i < loadedEvents.length; i++) {
... // I inventory the type of events in the current month here
    };
},... }

现在有了 v5,它看起来像这样:

"var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl,{
 ...,eventSources: [{
    url: 'myurl',...
}],loading: function(bool) {
    if (!bool) {
        var eventview = calendar.view;
        var loadedEventTypes = new Array();
        var loadedEventTypesHTML = ''; var loadedEventTypesstyles = '';
        var loadedEvents = calendar.getEvents(); // filter removed for debugging

        for (i = 0; i < loadedEvents.length; i++) {
...
        };
    },... }

虽然文档说在 v3 clientEvents 和 v4/5 getEvents 中都“...返回一个 FullCalendar 存储在客户端内存中的事件对象数组。”这不是我所看到的。

在 v3 代码中,clientEvents 确实检索刚刚通过 JSON url 加载的事件,但是在 v5 中,getEvents 在通过提供的 url 加载 json 之前返回事件数组; getEvents 事件集不包括刚刚加载(和显示)的 JSON。它确实保存了最后一次 json 调用之前获取的事件。即使事件显示在日历中,页面第一次加载数组也是空的。

是否有人对如何获取刚刚加载并在 v5 中显示的事件有任何建议。

这是 FullCalendar 中的错误吗?

解决方法

如果您想在加载后对事件进行处理,我认为您应该查看 Event Render Hooks 以及 eventDidMount 中的更多内容,而不是加载。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。