2

Backbone.js で記述された私の Web アプリケーションには、私が「モード」と呼んでいるものがあります。各モードは、現在アクティブなモデルとビューを示します。ハッシュ (#) のモード パラメータを変更することで、モードを切り替え、必要なバックボーン モデルとビューをインスタンス化します。

また、優先レイアウトを記述し、モード レベルでコンテナーの html コードを挿入することも論理的に思えます。

モード「PopulationPyramidMode」にモデルと 3 つのバックボーン ビューがあるとします。「HeaderView」は、垂直方向に 30 ピクセルを占める必要があります。「SidebarView」は水平方向に 200 ピクセルを占める必要があり、「CanvasView」は画面の水分を満たし、サイズ変更イベントでスケーリングする必要があります。

さらに複雑なことに、CanvasView は、サイズ変更時に再レンダリングする必要があるビジュアライゼーションを保持します。つまり、x/y スケールを再計算する必要があります。

それで、これに対する最善のアプローチは何ですか?

1) レイアウト ロジックはどこに配置する必要がありますか?
- 別の layoutManager で - その場合、どのように?
- 各ビューは、その推奨サイズなどを説明する必要がありますか?

2) レイアウトに必要な HTML/CSS を挿入し、レイアウトを切り替えるにはどうすればよいですか?

<!-- Layout 1 -->
<div id="header"></div>
<div id="sidebar"></div>
<div id="canvas"></div>

<!-- Layout 2 -->
<div id="header"></div>
<div id="canvas"></div>

特定のヒントと、JavaScript レイアウト全般についてありがとうございます。

4

2 に答える 2

0

このようなアプリケーションの構築に関する私の意見は、単純なオブザーバー パターンを使用することです。ハッシュタグが変更されたときに特定のイベントを単純にディスパッチするようにコントローラーを設計します。ディスパッチされるイベントと URL の間の参照テーブルとして機能するイベント マップをコントローラーに用意します。さらに良いことに、ハッシュ部分の選択に関する特定の規則に従うことができます。ユーザーが URL mydomain.com/#part1/part2 に移動するたびに、コントローラーはイベント「evt_part1_part2」をディスパッチします。共通のディスパッチ ポイント (dom 要素、または特にこの目的のために使用される JavaScript オブジェクト) を使用できます。

これで、すべてのビューがこの共通のディスパッチ ポイントをリッスンできるようになり、イベントがこのビューが探しているものと一致する場合は、そのビューを通じてそれぞれの環境を適宜作成できます。このアプローチは、ビューの区分化に確実に役立ち、よりモジュラーで保守しやすいコードを導きます。

于 2011-06-18T08:07:20.050 に答える
0

ここで大声で考えているだけです。レイアウトを管理する 1 つのビューを持つことができるように思えますが、必要に応じてレイアウトをモーフィングすることができます。問題は、何がレイアウトの変更をトリガーするかということです。

これらの異なるモードのルートとアクションを備えたコントローラーがあるかもしれません。このコントローラーは、このレイアウト ビューのインスタンスを保持し、パラメーター化された更新関数を呼び出すことができます。または、コントローラーがモード変更でイベントをトリガーし、それをリッスンするようにビューを設定することもできます。受信すると、ビューは更新機能を呼び出します。

于 2011-06-01T12:46:06.773 に答える