1

私は ajax-web-application(GWT) で履歴管理を使用しています。ユーザーが戻るボタンまたは進むボタンを押すと、別のビューが表示されます。すべてのビューは一度だけ作成されます。私の質問は、プレゼンターをどのように処理できるかです。

2 つの方法があると思います:
1. ビューはすべてのデータを保存し、すべての履歴変更イベ​​ントの後、新しいプレゼンターが作成されます。モデルが何らかのデータを必要とする場合、プレゼンターはビューにデータを要求し、それらをモデルに送信します。

2. プレゼンターはすべてのデータを保存し、すべての履歴変更イベ​​ントの後、プレゼンターはビューに再利用されます。したがって、ビューには ui ウィジェットのみがあり、ユーザーが行ったすべての変更はプレゼンターにリダイレクトされます。

私は 2 番目の方法を好みますが、それが mvp と互換性があるかどうかはわかりません。あなたは私に何を勧めますか?

4

2 に答える 2

3

3番目の方法があり、それはプレゼンターとビューのどちらもデータを保存しません。ビューにはUIウィジェットのみが含まれ、再利用されるシングルトンです。プレゼンターにはロジックとローカル状態が含まれており、プレゼンターは呼び出されるたびに作成されます。呼び出されるたびに作成することで、ローカルの状態が新鮮であることが保証されます。

プレゼンターが必要とする外部データは、プレゼンターの起動の一部としてサーバーから照会または照会できますが、プレゼンター間でデータを渡す必要がある場合は機能しない可能性があります。そのため、アプリケーションによって維持されるグローバルオブジェクトにデータを格納し、プレゼンターが呼び出されると、必要な特定のオブジェクトがプレゼンターのコンストラクターを介してプレゼンターに渡されます。プレゼンターとビューからデータを削除することにより、プレゼンター/ビューが管理する必要がないため、データをよりシンプルに保つことができます。このコードは、存在しない場合はサーバーからもデータを取得します。また、特定のプレゼンター/ビューをロードするURLを編集するなどして、ユーザーがページに移動する場合にも、より堅牢になります。データ管理をプレゼンター/ビューの外に移動することで、

于 2013-03-17T19:30:59.350 に答える
1

プレゼンターが軽量であること、つまり多かれ少なかれ状態がないことを確認すれば、それほど重要ではありません(私の解釈)。

データ状態のロード/保存のコードをプレゼンターから呼び出された別のクラスに委任し、プレゼンターをシングルトンにすることをお勧めします。

于 2013-03-17T09:08:58.277 に答える