使用Meteor的自动订阅时创建多个Fullcalendar

时间:2013-07-23 01:26:37

标签: meteor fullcalendar

我正在使用fullcalendar尝试Meteor来创建一个预订系统。基于这篇文章(How to keep data "reactive" when creating an array from a Collection),我可以创建fullcalendar并使用事件集合进行刷新。但是当我尝试使用autosubscribe为基于不同类别的事件添加过滤器时,发生了奇怪的事情。在DIV中会创建多个日历表。如果使用Meteor订阅返回所有事件,则不会发生。

如何解决?非常感谢您的帮助。

Meteor客户端JS代码片段如下:

Meteor.autosubscribe(function(){
    Meteor.subscribe("Events", Session.get('current_category'));
});

....

Template.doctors.rendered = function() {
    ....
    $('#calendar').fullCalendar({
    ....
    events: function(start, end, callback) {
        var cal_events = [];
        events.find().forEach(function(event_item) {
                var doc_name = doctors.findOne(event_item.doctor).name;
                cal_events.push({
                    title: doc_name,
                    start: event_item.start,
                    end: event_item.end,
                    allDay: false,
                });
            }
        });
        callback(cal_events);
    },
    ....
    });
    ....
}

解决

这里的主要问题是'Template.doctors.rendered'多次运行,它会生成多个完整的日历实例。 我将如下所示的日历<div id='calendar'></div>移动到单独的模板“cal_container”,并将“Template.doctors.rendered”下的所有代码移动到“Template.cal_container.rendered”中。现在它有效。

0 个答案:

没有答案