クライアント側で MVC を使用する Flex アプリケーションを作成しています。GraniteDS を使用しているため、リモート遅延読み込みと逆遅延読み込み機能があります。
ユーザーはアプリケーションにログインし、ボタンをクリックして電子メール アドレスを更新します。次にコントローラーが呼び出されますが、次にどの順序で処理を行うべきかわかりません。次のオプションが表示されます。
オプション
- クライアントでモデルを更新し、更新をサーバーに送信します。サーバーがエラーをスローした場合は、データの位相がずれているため、Flex アプリケーションをリロードするようにユーザーに伝えてください。それ以外の場合は、更新が正常に行われたと想定してください。
- コントローラーはデータをサーバーに送信し、サーバーが応答した後、コントローラーは更新されたデータでクライアント モデルを更新します。サーバーの応答が受信されない場合は、エラーが発生したことをユーザーに伝え、データの位相がずれている可能性があるため、アプリケーションをリロードするように依頼してください。
オプション 2 の方が優れているようですが、実装方法がわかりません。私のオプションは何ですか?
ソリューション
- MyUserのクローンを作成し、クローンをサーバーに送信します。サーバーがMyUserを返したら、モデルを更新します。クローンは元のコレクションをコピーするだけでクローンを作成しないため、MyUserのコレクション内のより深くネストされたオブジェクトをどのように処理しますか?
- MyUser.idを変更されたデータとともにサーバーに送信します。IDを使用してサーバーにMyUserをロードし、データを変更します。サーバーでデータが変更されたら、コントローラーがモデルを更新できるように、 MyUserをクライアントに返します。
解決策 2 は、Lazy/Reverse Lazy ローディングの GraniteDS 機能を回避するため、これを行うには非常に悪い方法のように思われます。
これを行うためのベストプラクティスの方法はありますか?