0

URL ハッシュの設定またはユーザーの操作に基づいて視覚化をレンダリングする JavaScript アプリケーションを開発しています。

(今のところ、私は MVC に Backbone.js を使用していますが、これらの質問はフレームワークにとらわれないと見なされる可能性があると思います...?)

ユーザーがインジケーター A とインジケーター B が選択されたアプリケーションの状態を見ているとします。ユーザーがインジケーター B を C に変更すると、どうなりますか?

さて、インジケーターを変更すると、モデルは新しいデータがフェッチされて操作されるのを待つ必要があります。

...そしてもちろん、インジケーターを変更すると、さまざまなビューに多くの影響があります。

  • 表示可能なエンティティが変更されます
  • 天秤が変わる
  • インジケーターのラベルが変わります、etc...

この段階での 1 つの疑問は、これらすべての従属/計算変数をどうするかということです。

この場合、モデルは、指標の変化に基づいて、データの可用性やスケールなども追跡する必要がありますか? したがって、これらすべての計算された属性の変更イベントもトリガーする必要がありますか?

いずれにせよ、モデルの更新について「メインの視覚化コントローラー」に通知する必要がありますが、それはどのように進行するのでしょうか?

この場合、アイコンの追加と削除、ラベルの変更などを引き起こすインジケーターの変更がありました。

別のシナリオでは、年だけが変わる可能性があります。その後、コントローラは別のパスを実行する必要がありますか?

そして 3 番目のシナリオでは、年と指標の両方が変更される可能性があります (たとえば、最初の URL ハッシュが設定されている場合) ... さらに別の一連の関数がチェーンでトリガーされるのでしょうか?

いつ何が起こるべきかを追跡できるように、これらのさまざまなシナリオを処理する堅牢な方法を探しています。私が特に興味を持っているのは、モデルに保持する属性と、ユーザー操作の小さな変更や複数の属性の変更をモデルにレンダリングできるようにコントローラー機能をレイアウトする方法についてのあなたの意見です。

4

1 に答える 1

0

私はbackbone.js に非常に慣れていないので、私の提案をすべてソルトとして受け取ってください

私があなたの懸念 (の 1 つ) を正しく理解している場合、変更が加えられたときにビューが完全に再レンダリングされるという考えが好きではありません。しかし、その 1 つのモデルにビューを 1 つだけアタッチするという考えはまだ好きです。その場合、複数のレンダリング イベントを作成し、それらをその特定の属性の変更に結び付けることができますか?

this.model.bind('change:propertyA', _.bind(this.renderA, this));
this.model.bind('change:propertyB', _.bind(this.renderB, this));
于 2011-08-18T18:26:56.573 に答える