0

私はpureMVCを学び、フレームワークをアプリケーションの1つに実装しようとしています。私は次のケースを持っています:

私のメインアプリケーションには、さまざまな種類のカスタムコンポーネントを追加するために使用されるCanvasがあります。カスタムコンポーネントの1つは「検索コンポーネント」です(ページ上に複数のインスタンスが作成されます)。私の検索コンポーネントにはテキストファイルと検索ボタンがあり、次の手順で検索を開始します。

1-検索ボタンをクリックすると、カスタムイベントがディスパッチされ、そのカスタムイベントは検索コンポーネントの参照をプロパティとして保持します。

2-私のAppMediatorはカスタムイベントをリッスンし、検索テキストとともに現在の検索コンポーネントの参照を取得します。

3-メディエーターは通知を送信します(sentNotification(AppConstants.SEARCH_CLICKED、component))。

4-SEARCH_CLICKED通知を使用してコマンドを登録しました。

5-コマンドはWebserviceProxyを取得し、そのSearch(text)メソッドを呼び出します。

6-WebserviceProxyはリモートWebサービスと通信し、asyncTokenを使用して結果を取得します。

私の質問は次のとおりです。 私のコマンドは、検索を開始するときにカスタム検索コンポーネントへの参照を持っていますが、検索Webサービスが結果を取得するのに時間がかかります。検索を開始したカスタム検索コンポーネントに結果を戻すにはどうすればよいですか。検索コンポーネントのインスタンスが複数あるので。そのコンポーネントの参照を保持するのに最適な場所はどこですか?その参照を保持して結果を渡すためにWebserviceProxyに変数を追加する必要がありますか、またはそのようなコンポーネントの参照を保持するためにグローバルプロキシを作成する必要がありますか?

ありがとう

4

2 に答える 2

1

私はPureMVCを数年間使用していますが、気に入っています。

主要コンポーネントの役割とコラボレーションについてはまだ理解していないと思います。

  1. コマンドとUI要素の間に依存関係があってはなりません。メディエーターは、UIコンポーネントから具体的な値を取得し、通知を介して送信する必要があります。この場合、コマンドとプロキシはテキスト値のみを取得し、そのソースは何であっても関係ありません。しばらくしてからUIを変更し、検索値を決定するためにユーザー側に別のコンポーネントがあるとします。あなたの場合、プロキシとコマンドを変更する必要があります。それは悪いでしょう。

  2. プロキシには、コマンドとメディエーターに関する情報がない場合があります。それは、別のコンポーネントがそれと相互作用できるようにする機能のみを提供でき、誰が興味を持っているかを知らずに、取得後に新しい情報を含む通知を送信します。

フレームワークの説明をもう一度読んで、質問を書いてください。私も物事を理解するのにいくつかの問題がありました、私はあなたの問題を見ます。

于 2013-01-24T15:42:31.500 に答える
0

アントンの答えに基づいて、私は再考し、依存関係を分離しようとしました。その結果、Mediatorのコンストラクターに異なるIDを提供することにより、「SearchMediator」を使用して検索ウィジェットの各インスタンスを個別に仲介しようとしました。これで、検索ウィジェットが新しい検索を開始すると、メディエーターがコマンドを呼び出し、コマンドがプロキシのメソッドを呼び出して実際の検索を実行し、DBから結果をフェッチして、通知を送信します。SearchMediatorはその通知を処理し、結果を適切なUIに渡します。

于 2013-02-26T07:58:01.813 に答える