1

昨夜、読み返すとひどく聞こえたという質問を投稿したので、それを削除して、今度は適切に再試行するために戻ってきました。

私は、Parsley を使用する Flex Mobile アプリを持っています。すべてが期待どおりに機能しますが、コントローラーで分離された結果ハンドラーを使用しようとしていますが、期待どおりに起動しないため、ポインターが必要です理由。

コマンドは次のようになります。

public function execute():void
    {
        var asyncToken:AsyncToken = Db.Instance.ViewChildren(mainModel.loggedInUser.userId);
        asyncToken.addResponder(new Responder(result, error));
    }

    public function result(result:ResultEvent):void
    {
        callback(result.result);
    }

    public function error(event:FaultEvent):void
    {
        callback(event.fault);
    }

これは期待どおりに機能し、コマンドが実行され、結果ハンドラーが結果を処理します。ビューのコントローラーにメッセージハンドラーを配置しようとすると問題が発生します。

[CommandResult]
        public function handleResult(result:AsyncToken):void
        {
            trace("result in the controller");
        }
        [CommandError]
        public function handleError(fault:AsyncToken):void
        {
            trace('error: ' + fault.fault.faultDetail);
        }

これらのリスナーはどちらも結果が到着したときに起動しないため、当然のことを行い、コードを次のように変更しました。

[CommandResult]
        public function handleResult():void
        {
            trace("result in the controller");
        }
        [CommandError]
        public function handleError():void
        {
            trace('fault in controller);
        }

これで起動しますが、データ ハンドルがありません。

コマンドの実行方法を次のように変更することを考えました

public function execute():AsyncToken
{
return Db.Instance.ViewChildren(mainModel.loggedInUser.userId);
}

結局、それは AsyncToken を返しますが、コマンドはまったく起動しません (これは、ChildEvent と呼ばれるイベントにマップされる 2 つのコマンド シーケンスの一部であり、これはチェーンの 2 番目で最後のイベントです。

要約すると、上記を機能させたいのですが、分離された結果ハンドラーで結果を管理できるようにしたいのですが、方法がわかりません。パセリのマニュアルは、この点に到達するのに最適です ( http:// www.spicefactory.org/parsley/docs/3.0/manual/?page=commands§ion=intro ) ですが、細かい部分は少し大ざっぱです。

ありがとう

4

1 に答える 1

1

コントローラーのコードを微調整すると、次のようになります。

        [CommandResult(type="view.user.UserEvent", selector="loadUser")]
        public function handleResult(result:Object):void
        {
            trace("this is the command result");
        }

また

        [CommandResult(selector="loadUser")]
        public function handleResult(result:Object, trigger:UserEvent):void
        {
            trace("this is the command result");
        }

これが起動すると、データが入ったオブジェクトが解決されます。

Parsley 3.0 のマニュアルでは、これが実際にどのように機能するかを説明するセクションが抜けていることに注意してください。最終的に、Parsley 2.2 のマニュアルで見つけました (3.0 のマニュアルの同等のセクションは削除されました!) 。 command_methods

みんな、ありがとう!

于 2015-06-04T10:36:55.243 に答える