問題:
画面に3つのUIコンポーネントがあります。
- トップメニュー:オプション(trueまたはfalse)
- 左メニュー:A、B、C、Dなどのアイテムのリスト
- フォームの内容:フォーム。の値に応じて表示または非表示
Top menu's Optionになります。その内部の内容は、選択されているものによって異なりLeft menu's itemます。たとえば、選択したAは2つの入力ボックスを表示し、Bは3つの入力ボックスを表示します。
それが機能する方法は、ユーザーが左側のメニュー項目を選択し、次にトップメニューのオプションをクリックすると、フォームのコンテンツが表示されることです。
トップメニューにはTopMenuモデルがあります
{
isSelected: false
}
左メニューLeftMenuCollectionにはそのようなモデルが含まれています
{
id: 0
label: "No label yet"
}
フォームの内容がFormContentModel長すぎてここに入力できません。
私には2つのビューがあります:TopMenuViewとLeftMenuViewforTopMenuとLeftMenuCollection。ただし、フォームコンテンツビューのビュー(呼び出しましょうFormContentView)は、両方から値を取得するTopMenu必要があります。また、いつ表示されるか、表示された後に何LeftMenuCollectionを表示するかを知る必要があります。
現在のアイデア:
上のユーザーのアクション
LeftMenuViewはイベントをトリガーFormContentViewし、選択されているものに応じて非表示のDOMにHTMLを入力します。TopMenuView表示されるようにトリガーFormContentViewされます。その後
FormContentView、独自のに保存されますFormContentCollection。
#1と#2については、次のようにPubSubモデルを使用しました。バックボーンで1つのビューから別のビューにイベントを発生させます
しかし、私はバックボーンボイラープレートhttps://github.com/tbranyen/backbone-boilerplateを使用しているので。appオブジェクトはapp.jsですでに作成されているため、これを行うことを計画しています。
app.PubSub = _.extend({}, Backbone.Events)
質問:
そのPubSubオブジェクトをどこでどのように作成しますか?router.jsにありますか?
PubSubはこれを行う正しい方法ですか?TopMenu私も「コンポジットモデル」を組み合わせて考えていましたが、インターネットLeftMenuCollection上のFormContentCollectionほとんどの人がPubSubを使っていると言っていました。