首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >欧芹命令解耦的结果处理程序和观察者

欧芹命令解耦的结果处理程序和观察者
EN

Stack Overflow用户
提问于 2015-06-03 09:21:46
回答 1查看 214关注 0票数 1

昨晚我发了一个问题,看完后听起来很糟糕,所以我把它删除了,然后回来再试一次,这一次是正确的。

我有一个Flex Mobile,它使用欧芹,一切正常工作,但我尝试在控制器中使用解耦的结果处理程序,但它不是在我期望的时候触发的,所以想要一个指针来说明为什么。

该命令如下所示:

代码语言:javascript
复制
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);
    }

它可以正常工作,执行命令,结果处理程序处理结果,当我试图在视图的控制器中放置一个消息处理程序时,问题就出现了。

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

当结果到达时,这两个侦听器都不会触发,所以我做了显而易见的事情,并将代码更改为:

代码语言:javascript
复制
[CommandResult]
        public function handleResult():void
        {
            trace("result in the controller");
        }
        [CommandError]
        public function handleError():void
        {
            trace('fault in controller);
        }

现在它启动了,但是我没有数据处理。

我确实考虑过将命令执行方法更改为

代码语言:javascript
复制
public function execute():AsyncToken
{
return Db.Instance.ViewChildren(mainModel.loggedInUser.userId);
}

正如它确实返回一个AsyncToken一样,但是命令根本不触发(它是映射到一个名为ChildEvent的事件的2命令序列的一部分),这是链中的第二个也是最后一个事件。

总之,我希望上面的内容能够起作用,但我希望能够在解耦的结果处理程序中管理结果,但是我不知道如何使用欧芹手册来达到这个目的(ion=intro),但是更精细的细节还比较粗略。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-04 10:36:55

通过对Controller代码的小修改,我们最终得到如下结果:

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

代码语言:javascript
复制
        [CommandResult(selector="loadUser")]
        public function handleResult(result:Object, trigger:UserEvent):void
        {
            trace("this is the command result");
        }

现在,这个激发,我得到一个对象与我的数据,解决了。

值得注意的是,欧芹3.0手册漏掉了解释实际工作原理的部分。我最终在欧芹2.2手册中找到了它( 3.0手册中的等效部分已被删除!)但如果你需要的话,methods

谢谢大家!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30615897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档