1

私の質問は主にBackbone.jsに関する概念ですが、質問が不明な場合はコードをモックアップできます。

Webサイトに2つのセクションがある場合を考えてみます。1つのビューと、アイテムのリストの並べ替え方法を選択するためのドロップダウンがある別のビューとしてのアイテムのリスト。明らかに、アイテムのリストは、リストに入力される実際のデータを格納するモデルのコレクションに関連付けられています。ただし、他のビューのドロップダウンが変更されたときにコレクションが異なる方法で並べ替えられるようにするための最善の方法がわかりません。コレクションの実際の順序を変更する必要がありますか、それともビューで必要な順序でビューをレンダリングするだけですか?

また、ドロップダウンのモデルを使用してドロップダウンの状態を追跡し、アイテムのリストビューをそのモデルにバインドして、アイテムのリストをいつ再レンダリングするかを知ることをお勧めしますか?

4

1 に答える 1

2

ここではいくつかの道を進むことができます。ここにいくつかあります:

  1. ルーターを使用します。ルーターはビュー、または少なくともトップレベルビュー(よりクリーンな)を保持し、ドロップダウンビューはルート変更をトリガーし、ビューに情報を渡します。クリーンなURLが必要な場合に最適です。
  2. ドロップダウンビューでリストビューへのポインタを作成します。ドロップダウンビューが変更イベントを受信すると、リストビューに更新するように明示的に指示します。(IMOはひどいアプローチですが、完全を期すためにここにリストされています。)
  3. モデルですべてをバックアップします。(最後の質問で提案したように。)ドロップダウンビューはモデルによってサポートされ、リストビューはそのモデルのイベントにバインドできます。(繰り返しになりますが、リストビューはドロップダウンモデルについて知る必要がありますが、理想的ではありません。)
  4. イベントマネージャーを作成します。ドロップダウンに変更が加えられると、あなたtrigger 'sort'と気になる人なら誰でもそのイベントを聞くことができます。これは簡単な解決策ではありませんが、過度に複雑でもありません。次に、リストビューは、sortイベントをリッスンする意図をイベントマネージャーに登録します。これにより、イベントマネージャー内で、ドロップダウンビューから離れた実際のビューが抽象化されます。

1と4は事実上同じものですが、ルーターが必要かどうかによって異なります。

基本的に、この種のシナリオでの私のヒューリスティックは、「知る必要のないことについては何も知らないはずです」です。ここに適用されます。つまり、ビューがお互いを知らないようにする必要があります。

于 2012-04-18T23:09:40.270 に答える