最近まで、フレックスのフレームワークとしてcairngormを使用していました。しかし、この最新のプロジェクトでは、私はメイトに切り替えました。モデルにデータを残すことに慣れているので、まだ少し混乱しています。同じデータセット(コレクション)に依存するコンポーネントがいくつかあります。コンポーネントでは、作成完了ハンドラーが「GiveMeMyDataEvent」を送信します。これは、イベントマップの1つによってキャッチされます。コマンドクラスのcairngormで、モデルをざっと見て、サーバーからデータを取得する必要があるかどうかを判断してから、モデルからデータを返すか、dbを呼び出しました。Mateでこれをどのように行うのですか?または、これを行うためのより良い方法はありますか?サーバーからすでに受信したデータを利用しようとしていますが、同時に、データをロードしたかどうかはわかりません。同じデータを使用するコンポーネントがインスタンス化されている場合、答えは「はい」です。それ以外の場合は「いいえ」です。どんな助け/ヒントも大歓迎です。
2 に答える
Mate のほとんどのものは間接的です。データを管理するマネージャーがあり、マネージャーとビューの間にインジェクター (バインディング) を設定します。インジェクターは、ビューがマネージャーと同期されていることを確認します。そうすれば、ビューには常に最新のデータが含まれます。ビューは、イベントのディスパッチの直接的な結果として更新されるのではなく、間接的な結果として更新されます。
新しいデータをロードする場合は、イベント マップによってキャッチされるイベントをディスパッチします。これは、データをロードしてイベント マップに返す何らかのサービスを呼び出します。イベント マップはそれを適切なマネージャーに貼り付けます。
マネージャーが更新されると、インジェクターはビューが更新されていることを確認します。
インジェクターを使用することで、ビューに常に最新のデータが含まれていることが保証されます。そのため、ビューにデータがある場合、データがロードされます。ただし、定期的に更新する必要がある場合を除きます。定期的に更新する必要がある場合は、データが古いかどうかを判断してディスパッチする必要があります。サービスコールをトリガーするイベント。更新をトリガーし、インジェクターをトリガーして新しいデータをビューに再度プッシュし、ラウンドを繰り返します。
要するに、あなたの質問に対する答えは、インジェクターを適切に使用するようにする必要があるということです。これが高レベルの回答である場合は、Mate フォーラムでさらにヘルプが得られることを知っています。
現在取り組んでいるアプリでも同様の状況に遭遇しましたが、 2つのイベントを考え始めると、Mateに簡単に実装できることがわかりました。
最初のイベントはのようなものDataEvent.REFRESH_MY_DATA
です。このイベントは一部のDataManagerによって処理され、無視するか(データがクライアントにすでに存在し、最新であると見なされるため)、マネージャーはのようなイベントをディスパッチできDataEvent.FETCH_MY_DATA
ます。
イベントはFETCH_MY_DATA
、イベントマップでサービス呼び出しをトリガーし、マネージャーの値を更新します。このアップデートは、ビューにプロパティが挿入されています、幸せな日々:)