parsley Event Dispaching模块无法正常工作

时间:2014-04-17 19:14:59

标签: flex module dispatcher parsley

**在模块中使用自己的moduleContext和配置(消息 - 命令,服务等)中的事件不能正常工作

我有一个名为main.mxml的应用程序:

1)main.mxml:

<fx:Declarations>
        <parsley:ContextBuilder config="{config}"/>
        <parsley:Configure />
</fx:Declarations>

<mx:ModuleLoader id="Login" url="Login.swf" ready="moduleInit();"/>

2)config.mxml(*)

<parsley:Objects />  // not using it for now.. 

3)Login.mxml(swf模块)

<s:Module >

        <fx:Declarations>
            <parsley:ContextBuilder config="{LoginConfig}" />
            <parsley:Configure />   
        </fx:Declarations>

        <fx:Script>
                <![CDATA[

                    [MessageDispatcher]
                    public var dispatcher:Function; 

                    private function _onClick():void {
                        dispatcher(new LoginRequestMessage(LoginRequestMessage.LOGIN_REQUEST_MESSAGE));
                    }
                ]]>
        </fx:Script>        

        <mx:Canvas>
                <mx:Button label="sendReq" id="btnSnd" click="_onClick()" />    
        </mx:Canvas>

</s:module>

4)LoginConfig.mxml(模块上下文配置)

<parsley:Objects .. >

        <fx:Declarations>
                <domain:LoginModel/>
                <parsley:DynamicObject type="{LoginService}"/>  
                <parsley:MapCommand type="{LoginCommand}" selector="{LoginRequestMessage.LOGIN_REQUEST_MESSAGE}"/>  
        </fx:Declarations>

    <fx:Script>
            <![CDATA[
                import Modules.Login.Application.bussiness.commands.*;
                import Modules.Login.Application.bussiness.services.*;
                import Modules.Login.Application.messages.*;
            ]]>
    </fx:Script>

</parsley:Objects>          

所有配置都正常(它的工作原理(相同的代码)但只有当我将s:module更改为s:面板(或任何与模块不同的内容)或者我保持登录时才能工作:模块但移动所有从loginConfig(模块配置文件)配置到s中定义的&#34; main&#34;上下文:Appplication也可以。

问题在于模块 :(模块只适用于第一个s:应用程序上下文)

当我运行或调试应用程序时会发生这种情况:

s:应用程序启动并加载模块,用户单击btnSnd按钮并执行_onClick(),但是:

dispatcher(new LoginRequestMessage(LoginRequestMessage.LOGIN_REQUEST_MESSAGE));
执行

- &gt;什么都没发生 。 没有调度(参见4),LoginConfig.mxml源代码,提到 之前,了解更多详情..)

所以..当我使用模块及其上下文配置时(看起来模块没有附加到上下文,但它附加到s:应用程序上下文。

正如我之前所说:

A)如果将LoginConfig配置移动到上下文,则所有工作正常

B)如果将s:模块中的Login.mxml更改为任何displayObject,例如mx:panel,而不是模块,则一切正常。(如果我这样做(不使用)模块),即使离开conf LoginConfig.mxml(&#34;第二个上下文&#34;包含conf而不是将其conf移动到s:app first context),一切正常。

所以,我的问题是实现一个模块(登录)有自己的上下文,配置指向自己的欧芹:对象mxml配置文件(loginConfig),当模块函数在该配置模块中调度parsley消息事件时,什么都没有即使conf正确也会发生。

C)更多相同..但是:所有工作正常如果我创建一个新项目,并且只放置模块及其上下文conf,其类(消息,命令,服务等)更改login.mxml s:模块到s:应用程序使用loginContext作为唯一的&#34; main&#34;上下文..这就是为什么我可以说这个简短示例中涉及的命令,消息等配置工作正常但只有在其自己的上下文中使用模块和conf时才起作用。

我做了很多尝试,但没有任何作用..我需要尽快解决这个问题,同时,我决定将所有配置放在第一个上下文文件(s:应用程序上下文)中,保持登录为模块(选项(A)作为临时解决方案,但我不喜欢它..我需要一个真正的解决方案,非常感谢所有回复

0 个答案:

没有答案