ich die jQuery-Plugin bin mit full calendar in Verbindung mit Backbone.js und ein Problem mit dem es nicht richtig angezeigt wird, wenn die erste Laden.volle Kalender nicht beim Laden (mit Backbone) Anzeige
Dies ist meine Render-Funktion für die Backbone-Ansicht enthält den Kalender:
render: function() {
var that = this;
// DEBUG:
// console.log({entries: data});
this.$el.html(this.template(this.serialize()));
this.$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
height: that.$el.parent().height()
});
// prints undefined
console.log(this.$('#calendar').fullCalendar('getView').title);
window.setTimeout(function() {
this.$('#calendar').fullCalendar('changeView','agendaWeek');
}, 500);
return this;
}
Sie können sehen, ich eine Reihe Timeout haben für 500 ms enthalten. Wenn ich diese 500 ms verzögere und dann die Ansicht in agendaWeek ändere, wird dies angezeigt. Wenn ich jedoch nicht verzögere, wird der Kalender nicht angezeigt. In beiden Fällen werden keine Fehler gedruckt.
Ich bin im Verlust von was hier zu versuchen oder was schief gehen könnte. Gibt es einen Rückruf für die Erstellung des Kalenders, der mir irgendwo in den Dokumenten fehlt?
Dank
EDIT: könnte es sein, dass die .html() funciton nicht abgeschlossen ist und ein Problem verursacht?
Interessiert sich Fullcalendar vielleicht für die Größe oder Position seines Elements? Ich bin auf ähnliche Probleme mit Google Maps gestoßen und der 'setTimeout (..., 0)' Trick hat für mich funktioniert. –
Ich bin mir ziemlich sicher, dass das Problem ist, worauf @muistooshort angespielt hat. Ich habe das Vollkalender-Plugin benutzt und es interessiert sich für die "Größe und Position" seines Elements. – Jack
Bleibt das Problem, wenn Sie die Höhe fest codieren? Was this.serialize() zurückgibt? –