次のバックボーン アプリケーション構造を検討してください。
AppView
Subview
FirstSubviewInQuestion
Subview
Subview
SecondSubviewInQuestion
アプリケーション ビューは、特別なアイテムのコレクションを作成して保存します。ある時点で、最初と 2 番目のサブビューがそのコレクションにアクセスする必要があります。コレクションを彼らに渡す最良の方法は何ですか?
私自身、いくつかの方法を見ていますが、それぞれに欠点があります。
1) App View 内ではなく、さらにグローバルにそのコレクションのインスタンスを作成し、それを依存関係として渡します (プロジェクトは RequireJS を使用するため、AppView と両方のサブビューに渡されます)。欠点: アプリ ビューは、アプリケーションの最上位の要素であると想定されています。しかし突然、コレクションのいくつかのインスタンスが上に浮かんでいます。
2)または、次のことができます:
// some subview
var collection = {};
Backbone.trigger( "item:getSpecialItems", collection);
// now the collection has data
// app view
this.listenTo( "item:getSpecialItems", function(obj) {
// copy collection to passed object
_.extend(obj, this.specialCollection);
});
欠点: グローバルなイベントをトリガーしています。アプリ ビューのみが応答することはわかっていますが、設計が悪いように感じます。さらに、コレクションを渡すこの方法はハックのようです。
たぶん、それを行うための他の賢い方法がいくつかありますか?