0

Flex 4.6 と PHP および MySQL を使用して、ブラウザー ベースのアプリを開発しています。ログイン後、アプリケーションは cueItem オブジェクトの ArrayCollection (cueArray と呼ばれる) に、php クラスの RemoteObject を設定します。

cueArray にバインドされたカスタム ItemRenderer を持つリストがあります。ItemRenderer には、完了とキャンセルの 2 つのボタンがあります。キャンセルをクリックすると、特定の cueItem.state 変数 (ItemRenderer 内の data.state を変更することによって呼び出される) が「cued」から「cancelled」に変更されます。cueArray の eventListener は、RemoteObject でデータを更新する changeEvent をトリガーし、クリックされた cueItem オブジェクトを cueArray から削除します。

秘訣は、(接続が切断されたために) RemoteObject 呼び出しが失敗した場合、状態を「cued」に戻して、アイテムを cueArray から削除しないようにすることです。結果イベント ハンドラーが呼び出された場合、項目は cueArray から削除する必要があります。

問題は、Result および Fault イベント ハンドラーで、クリックされた cueArray 項目にアクセスできないことです。回避策があることは認識していますが、適切な解決策を探しています。たとえば、Result イベント ハンドラーでは、変更された cueItem の ID を php 関数に返すようにできますが、Fault ハンドラーの問題は解決しません。

あなたはなにか考えはありますか?

前もって感謝します!

イアン

4

1 に答える 1

0

Target と currentTarget は、リモート処理への参照を返します。getCueItemByIDリモート サービスを呼び出すと、イベントの伝播チェーンが壊れるため、メソッドを回避することはできません。保留中の cueItems を動的オブジェクトに格納し、最終的に Fault または Result に戻すこともできます (以下は単なる例です。アイテムの管理方法がわからないため、欠落している部分があります)。

private var pendingItems:Object = {};

private function onCueArrayChange(event:CollectionEvent):void
{
    // No idea how you get your current cueItem...
    item = getConcernedItem();

    pendingItems[item.id] = item;
    remoteCall();
}

private function onFault():void
{
    var myItem = pendingItems[myId];
}
于 2011-12-08T09:16:28.390 に答える