2011-08-15 18 views
1

何か奇妙なことが起こっています。私は、私は、コンソールでそれを実行し、それが動作するただし場合、レンダリングされる決してそれを除いて、BACKBONE.JSビューを作成していないコードがある:Backbone.jsレンダリングされていないビュー

function createBookingsView($container, roomID){ 
var BookingsView = Backbone.View.extend({ 
    el    : $container, 
    initialize  : function(){ 
          console.log("derp"); 

          _.bindAll(this, "addOne", "addAll", "render"); 

          this.bookings = new Bookings(); 
          this.bookings.bind("change", this.addOne); 
          this.bookings.bind("refresh", this.addAll); 
          this.bookings.bind("all", this.render); 

          this.bookings.fetch({data : {"room" : roomID}}); 
          console.log(this.bookings.get(1)); 
         }, 
    addAll   : function(){ 
          this.bookings.each(this.addOne); 
         }, 
    addOne   : function(booking){ 
          var view = new BookingView({model:booking}); 
          $(this.el).append(view.render().el); 
         }, 
    render   : function(){ 
          $(this.el).html(""); 
          this.addAll(); 
         } 
}); 
return new BookingsView; 

};

と相続人は、それがどのように呼ばれています:私は手動でコンソールで上記の行を実行すると

window.LEFT_BOOKINGS = createBookingsView($("#timetable-a .bookingContainer"), room.id); 

は、それが見事に動作します。私のスクリプトには読み込まれません。

+0

これはdocument.readyなどで呼び出されますか? – chris

+0

私はJQueryMobileを使用しているので、 "pagebeforeshow"イベントで呼び出されます。 _window.LEFT_BOOKINGS_が割り当てられていて、コンソールからそれにアクセスできるので、呼び出されることがわかります。 ** window.LEFT_BOOKINGS = createBookingsView($( "#timetable-a .bookingContainer")、2); ** – sw00

+0

大丈夫、私はいくつかの調査を行いました。 createBookingsViewを呼び出すと$( "#timetable-a .bookingContainer")がDOMにないことが分かります。だからおそらく別の問題です。 – sw00

答えて

0

私が必要とする前に戻ってこない非同期関数に関する問題がありました。

関連する問題