我正在尝试使用全日历的 Meteor 创建一个预订系统。基于这篇文章(如何在从集合创建数组时保持数据“反应性”),我可以使用事件集合创建和刷新全日历。但是当我尝试使用自动订阅为基于不同类别的事件添加过滤器时发生了奇怪的事情。在 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”。现在它起作用了。