javascript - 使用多个日历时完整日历事件消失 - Meteor

标签 javascript jquery meteor calendar fullcalendar

我想在我的 Meteor 应用程序中使用 Fullcalendar 在一页上显示多个项目的时间表。每个项目都有自己的基本周日历 View 和自己的事件。当仅渲染一个日历时,我能够使日历按预期工作。

对于多个日历,事件会在第一次渲染时显示,但在重新获取事件时消失。我有一个自定义按钮,可以同时更改每个日历的星期。改变几周后,这些事件就会消失。使用单个日历时,相同的功能运行良好。我引用了 George McKnight 的视频作为起始引用:https://www.youtube.com/watch?v=e2jRxw0saRc

我认为在 for 循环中渲染多个日历是一个问题。我见过一些论坛谈论事件“坚持”选项,但由于我没有遇到事件随着一个日历而消失的问题,我认为这不是问题。我还看到一些谈话指出我尝试事件源,但不确定如何将其应用到我的用例中。

这是我的代码片段:

Template.ScheduleAdminTest.rendered = function () {
    var orgId = UserProfiles.findOne({userId:Meteor.userId()}).orgId;
    var items = Items.find({}, {reactive: false}).fetch();
    
    // INITIALIZE VARIABLES
    var itemId;
    var events;
    var itemReservations;

    // RENDER CALENDAR FOR EACH ITEM
    for (var i = 0; i < items.length; i++) {
        itemId = items[i]._id;

        $('#calendar-'+itemId).fullCalendar({
            header:  false,
            firstDay: 0, // SUNDAY
            contentHeight: 100,
            eventLimit: true,
            defaultView: 'basicWeek',
            views: {
                week: {
                    eventLimit: 5
                }
            },
            editable: false,
            eventColor: '#2BA9A5',
            events: function(start, end, timezone, callback) {
                events = [];
                itemReservations = ItemReservation.find({itemId: itemId}, {reactive:false});
                
                itemReservations.forEach(function(reservation) {
                    events.push({
                        id: reservation._id,
                        title: reservation.title,
                        start: reservation.start,
                        end: reservation.end,
                        quoteId: reservation.quoteId,
                        itemId: reservation.itemId,
                    });
                });

                callback(events);
            },
            eventClick: function(calEvent, jsEvent, view) {
                // code for rendering a modal for editing and reviewing events
            },
            dayClick: function( date, jsEvent, view) {   
                // code to display modal for adding an event
            }

        });  // end calendar set

    } // end for loop for items
};

最佳答案

在渲染每个日历后尝试此操作:

  $('#calendar-'+itemId).fullCalendar('removeEvents');
  $('#calendar-'+itemId).fullCalendar('addEventSource', events)

关于javascript - 使用多个日历时完整日历事件消失 - Meteor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31030524/

相关文章:

javascript - 如何在 JavaScript 中删除元素后面的元素

javascript - 类型错误 : 'undefined' is not a function even when using jQuery. 无冲突

javascript - angularjs - 从工厂返回数据时遇到问题

javascript - 使用 KnockoutJS 浏览 Javascript 和 JQuery 中的 JSON 文档数组

javascript - telerik radGrid - 在排序/分页/过滤器上保持客户端状态

javascript - 如何合并不同集合的游标并按日期排序

html - meteor - 更改不同模板的 HTML <head> 部分的内容?

javascript - Meteor 助手在 Angular 模板中不可用

javascript - Chrome 扩展 : Redirect at specific time

javascript - 使用 JavaScript 模拟 CSS 悬停