2013-08-12 9 views
8

jQueryプラグインfull calendarをbackbone.jsと組み合わせて使用​​しています。最初の読み込み時に正しく表示されないという問題があります。ロード時にフルカレンダーが表示されない

これは私のカレンダーを含むバックボーン・ビューの機能をレンダリングです:

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; 
} 

あなたは私を含め500ミリ秒の設定タイムアウトを持って見ることができます。その500msを遅らせてからagendaWeekにビューを変更すると、それが表示されます。しかし、私が遅れることがなければ、カレンダーは表示されません。どちらの場合もエラーは表示されません。

私はここで何をしようとしているのか、何が間違っているのか分からない。ドキュメントのどこかに見つからないカレンダーを作成するためのコールバックがありますか?

おかげ

EDIT:それは.htmlを()funcitonが完了し、問題の原因ではないということだろうか?

+3

Fullcalendarはおそらくその要素のサイズや位置を気にしていますか?私はおそらくGoogle Mapsと同様の問題に出くわしたし、 'setTimeout(...、0)'トリックが私のために働いた。 –

+0

私はかなり問題が@muistooshortが暗示したものであると確信しています。私は完全なカレンダープラグインを使用しており、その要素の「サイズと位置」を気にしています。 – Jack

+0

高さをハードコードすると問題は解決しますか? this.serialize()は何を返しますか? –

答えて

12

私は同様の問題を持っていたドキュメントで、この重要な情報を見つけました:

http://arshaw.com/fullcalendar/docs/display/render/

私のカレンダーは現在表示されていないため、正しく描画されない親コンテナを作成選択されていないタブにありました。タブを選択した後にレンダリングメソッドを呼び出すと、すべてがうまくいきました。

問題は同様の方法で解決される可能性があります。

+0

ありがとう..! :) –

1

私はbackbone.jsを使用していますが、私も同じ問題がありました。

私は、OnRender()イベントでカレンダーを宣言して初期化していました。

この問題を解決するために、私はカレンダーを宣言して初期化するためのコードをOnShow()イベントに移動しました。

問題:

私の問題によると、それだったので、要素がDOMに存在しませんでしたが必要です。 OnShow()は、DOMが完全に準備できたら解雇されます。

最後にそれは私のために働いた。

関連する問題