Я пытаюсь написать простое приложение на основе пакета FullCalendar. Когда я запускаю код, ни одно из событий не отображается, однако сразу после нажатия дня в этот день отображается событие. Если я нажму на другой день сразу после этого, он сотрет последний и покажет самый последний.FullCalendar отображает только одно событие
CalEvents = new Mongo.Collection("calevents");
// to be used later to handle editing
if (Meteor.isClient) {
Session.setDefault("event2edit", null);
Session.setDefault("showEditWindow", false);
Session.setDefault("lastMod", null);
Router.route('/', function() {
this.render('home');
});
Router.route('/calendar', function() {
this.render('calendar');
});
// runs when page has been rendered
Template.calendar.rendered = function() {
$('#calendar').fullCalendar({
events: function (start, end, timezone, callback) {
var events = [];
calEvents = CalEvents.find();
calEvents.forEach(function (evt) {
events.push({
id: evt._id,
title: evt.title,
start: evt.start,
end: evt.end
});
});
//alert(events.length);
callback(events);
},
dayClick: function(date, jsEvent, view){
CalEvents.insert({title:'NEW', start:date, end:date});
Session.set('lastMod', new Date());
updateCalendar();
},
eventClick: function (calEvent, jsEvent, view) {
}
});
}
Template.calendar.lastMod = function() {
return Session.get('lastMod');
}
}
var updateCalendar = function(){
$('#calendar').fullCalendar('refetchEvents');
}
if (Meteor.isServer) {
Meteor.startup(function() {
// code to run on server at startup
});
}
Это ошибка? Или мой код что-то отсутствует? Спасибо.
Я предполагаю, что это связано с повторными событиями после того, как вы вставляете их. Являются ли функции, которые вы вызываете асинхронно для «CalEvents»? Совет. Вы можете переписать 'calEvents.forEach' и' events.push' в ['var events = calEvents.map'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ Global_Objects/Array/map) – A1rPun
Не уверен в async, но тот же код работал на очень ранних версиях Meteor. Я попробовал ваше предложение и получил тот же результат. –
Для людей с той же проблемой, которые возникают из-за этого: я обнаружил, что это связано с тем, что коллекция не доступна для записи/доступна в этом случае. Я пошел с маршрутом «disable autopublish + collection on server + publish from client» и устранил проблему. –