2012-01-19 14 views
0

私はテンプレートを扱う多くのビューを持っています。ビューを使用したレンダリングは完全に機能し、現在はルータに入っています。すべてのビューがレンダリングされたときにイベントを発生させる方法を模索しています! LAB.jsのようなjsローダーを使用しましたが、何も動作しません!Backbone.jsでレンダリングした後にイベントをトリガする方法は?

すべてレンダリングした後、私はイベントをFirebugコンソールに入力して作業します!

どのようにすれば、すべてのビューがレンダリングされたときにトリガーになるようにイベントを配置できますか?

**マイイベント:**

$('div[id ^="solfg_"]').mobilyblocks(); 

**ルータ:**

(function() { 

window.AppRouter = Backbone.Router.extend({ 
routes: { 
    "" : "init" 
}, 

init: function(){ 

    this.solfsmodel = new Solfs(); 
    this.solfsmodel.fetch(); 
    this.solfsView = new SolfsView({model: this.solfsmodel}); 

} 

}); 
var app_router = new AppRouter; 
Backbone.history.start(); 
}(jQuery)); 

更新ありがとう:私は解決策を見つけたsame problems

答えて

1

jqueryから$ .when()。then()を使ってください私はこのjquery関数を見たことがないことを夢見ています。

* 私の解決策:*

(function() { 

window.AppRouter = Backbone.Router.extend({ 
routes: { 
    "" : "run" 
}, 

initialize: function(){ 
    this.solfsmodel = new Solfs(); 

    this.solfsView = new SolfsView({model: this.solfsmodel}); 

}, 
run: function(){ 
    $.when(
    this.solfsmodel.fetch(); 
).then(function(){ 
    *$('div[id ^="solfg_"]').mobilyblocks();* 
    }); 
} 
}); 
var app_router = new AppRouter; 
Backbone.history.start(); 
}(jQuery)); 
+0

ビューにあなたのコレクションをバインドすることがありますか?コレクションがフェッチされるのを待つ必要がある場合は、イベント 'success'または' error'を使用できます。私は新しい答えを書いて、それをあなたに示す方法を示します。 – Atinux

0

あなただけのコレクションは(:http://backbonejs.org/#Collection-fetchソース)フェッチすることを待つ必要がある場合は、fetch方法のsuccessコールバックを使用することができます。

他のlibrairiesを使用する前に、Backbone.jsメソッドを使用することをお勧めします。

だからあなたのコードは次のようになります。

(function() { 

    window.AppRouter = Backbone.Router.extend({ 
     routes: { 
      "" : "run" 
     }, 

     initialize: function(){ 
      this.solfsmodel = new Solfs(); 
      this.solfsView = new SolfsView({model: this.solfsmodel}); 
     }, 

     run: function(){ 
      this.solfsmodel.fetch({ 
       success: function() { 
        $('div[id ^="solfg_"]').mobilyblocks(); 
       } 
      ); 
     } 
    }); 
    var app_router = new AppRouter; 
    Backbone.history.start(); 
}(jQuery)); 
+0

複数のモデルをお持ちの場合はどうしたらいいですか?それぞれの成功のために実装するのですか? – trouble

+1

実際に複数のモデルを提供する場合、$ .whenはより良い解決策です。しかし、エラーが発生したかどうかを確認することを忘れないでください。 – Atinux

関連する問題