2011-11-10 9 views
0

コレクションがリモートサーバーから非同期にロードされたときにビューをレンダリングします。私は 次のコレクションクラスに非同期データが取得されたときのBackbone.jsコレクションイベントの修正

class BusinessUnits extends Backbone.Collection 
    model: BusinessUnit 

    parse: (units) -> 
    units 

を持っている。そして、私はこれをやっていた私の見解:フェッチが完了する前に

load: (businessUnits) => 
    @collection = businessUnits 
    @collection.fetch() 
    @render() 

明らかに(レンダリング)が呼び出されます。

コレクションが取得されるたびに発生するbackbone.jsイベントはありますか、自分自身を発砲するのが良いでしょうか?

これは非常に一般的なシナリオのようです。人々はこのような状況をどのように扱いますか?

答えて

5

私は"reset" eventがあなたが探しているものだと思います。

"リセット"(コレクション) - コレクションの内容全体が置き換えられたとき。

これは、フェッチが完了した後にトリガーされます。

load: (businessUnits) => 
    @collection = businessUnits 
    @collection.bind 'reset', => @render() 
    @collection.fetch() 
+1

+1、あなたは匿名関数を作成する必要はありませんが:'@collection.bindは、「リセット」、render' –

+0

@BrianGenisio @:動作しませんその後、レンダリングはその範囲を失うことになるので、ノー? Collection.bindはスコープを現在のオブジェクトにバインドしません(またはそれを行います)? – Thilo

+1

backbone.jsのドキュメントによると、コールバックが呼び出されたときにコンテキスト値を提供するには、オプションの第3引数を渡します。 ': '@collection.bind' reset '、@render、@' – Thilo

関連する問題