volle Kalender nicht angezeigt, wenn es geladen (mit Rückgrat)
Ich bin mit dem jQuery-plugin volle Kalender in Verbindung mit backbone.js und habe ein Problem, wo es nicht richtig angezeigt, beim ersten laden.
Dies ist meine render Funktion für das backbone-view mit 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;
}
Können Sie sehen, habe ich ein set timeout von 500 ms aufgenommen. Wenn ich die Verzögerung 500 ms, und ändern Sie dann die Ansicht auf agendaWeek, es wird angezeigt. Wenn ich allerdings nicht verzögern, wird der Kalender nicht angezeigt. Es gibt keine Fehler printed in jedem Fall.
Ich bin an einem Verlust, was hier zu versuchen, oder was könnte falsch gehen. Gibt es einen Rückruf für die Erstellung der Kalender, die mir fehlen irgendwo in den docs?
Dank
EDIT: könnte es sein, dass die .html() funciton ist nicht vollständig und verursacht ein Problem?
- Tut Fullcalendar vielleicht kümmern sich die Größe oder position des Elements? Ich habe über kommen möglicherweise ähnliche Probleme mit Google Maps und der
setTimeout(..., 0)
trick arbeitete für mich. - Ich bin mir ziemlich sicher, die Frage ist, was @muistooshort angedeutet. Ich habe die volle Kalender-plugin und es macht die Pflege über die "Größe und position" der element.
- Hat das Problem bleibt, wenn Sie hartcodieren, auf der Höhe? Was dies.serialize() gibt?
- diese.serialize() sollte vielleicht diese.Modell.toJSON() ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem und fand diese wichtigen Informationen in der Dokumentation:
http://arshaw.com/fullcalendar/docs/display/render/
Mein Kalender wurde auf eine Registerkarte, die derzeit nicht ausgewählt, wodurch der übergeordnete container nicht sichtbar und damit nicht korrekt gezeichnet. Hinzugefügt einen Aufruf der render-Methode nach der Auswahl der tab-und es hat alles toll.
Dein Problem könnte gelöst werden in einer ähnlichen Art und Weise.
Ich bin mit backbone.js und auch ich hatte das gleiche Problem.
War ich das deklarieren und initialisieren Kalender in
OnRender()
Veranstaltung.Später um dieses Problem zu lösen zog ich den code für das deklarieren und initialisieren Kalender in einen
OnShow()
Veranstaltung.Problem:
Laut meiner Ausgabe war es denn erfordern element nicht vorhanden war, auf dem DOM.
OnShow()
gefeuert wird, wenn Ihr DOM ist völlig fertig.Endlich hat es geklappt für mich.