我正在使用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”中。现在它有效。