0

Backbone で設計されたアプリケーションのアーキテクチャに問題があります。

カスケードされた階層ビューがあります。つまり、ルート ビューにはヘッダー ビュー、ミドル ビュー、フッター ビューがあります。それらのそれぞれは、いくつかの下位レベルのビューで構成されています。たとえば、ヘッダー ビューは、タブ、設定、およびログイン/ログアウト ビューで構成されています。それは単なるビューの集約です。

また、いくつかの属性を持つ構成モデルもあり、 AJAX (標準バックボーンフェッチ) を介してロードされます。モデル属性は、ポップアップ、メニューなどを使用してインターフェイスに表示され、ユーザーが自分の設定を選択できるようにします。ユーザーが設定を変更すると、アプリの多くの部分を再レンダリングする必要があります。構成モデルは「状態」プロパティを保持します (たとえば、プロパティはAJAX 経由でフェッチされたcurrentPeriod中で使用されます)periods

ビュー内では、構成で何かが変更されたときにlistenTo(this.model, 'change:currentPeriod', this.render)、このビューを再レンダリングするために使用します。

model:: 内にすべてのデフォルトの状態属性を設定しparseました。問題は、設定する属性が 10 個あり (解析が終了した後)、おそらくそれぞれがいくつかのイベントをトリガーする場合、それらの多くが複数回実行されることです (これは私が望んでいるものではありません)。

{silent:true} オプションを使用して解析内で現在の状態属性を設定する可能性を探していました。そうすると、イベントはトリガーされません。すでに同じ問題を抱えていて、簡単な解決策があることを願っています。前もって感謝します!

4

3 に答える 3

0

これを行う 1 つの方法は、プロキシ (裸のBackbone.Eventsオブジェクト) を作成し、ビューにそれをリッスンさせることです。プロキシ オブジェクトはモデルをリッスンしall、モデルが "I'm done" イベント (の最後にトリガーする) を発生させるまで、モデルによって発生したイベントを単純にキューに入れます (重複するイベントを排除しますparse)。次に、プロキシはキューに入れられたすべてのイベントを起動し、キューをフラッシュします。

于 2013-06-06T01:14:32.273 に答える