0

Backbone と Requirejs を使用して単一ページのアプリを構築しています。

今のところ、モジュールファイルから新しいインスタンスを返し、ファイルを次のように終了しています。

 return new moduleName;

コレクションの初期化メソッドに引数を渡さなければならないまで、これはうまくいきました。インスタンスの作成時に初期化が呼び出されるため、return ステートメントから「new」を取り除きました。

return mymoduleName;

そして、ルーターでパラメーターを使用してコレクションをインスタンス化しました。

myCollection = new library({paramname: "value"});

これは確かに「ライブラリ」のインスタンスを作成します - ルーターの定義ブロックで導入されたコレクションですが、レンダリングを担当するビューに渡すにはどうすればよいですか?

私のビュークラスは定義ブロックに同じ依存関係があり、その初期化でコレクションのリセットにバインドします:

this.collection = library;
_.bindAll(this, 'render');
this.collection.bind('reset', this.render);

これは、コレクション クラスから "new" を取り除く前に機能しました (これは、振り返ってみるとまったく意味がありません!) が、ルーターでインスタンス化されたため、ビューがレンダリングされなくなりました - 同じインスタンスをビューに渡すにはどうすればよいですか?

4

1 に答える 1

1

初期化メソッドでコレクションを設定しないでください。ただし、ビューをインスタンス化する場所 (この場合はルーター) に設定します。

var myCollection = new library({paramname: "value"});
var myView = new myCustomView({ 
    collection: myCollection 
});

myCollectionが他の場所からもアクセスする必要がある変数である場合は、ルーターに設定するか ( myRouter.myCollection = ...)、グローバル オブジェクトを保持するモデルを作成するか ( MyAppGlobals)、単にグローバル変数を使用することができます (推奨されません)。

于 2012-05-11T09:48:05.343 に答える