2009-12-15 56 views
0
package com.services 
{ 

     import com.asfusion.mate.events.ResponseEvent; 
     import com.events.navigation.DesgManagementEvent 
     import flash.events.EventDispatcher;  
     import mx.controls.Alert; 

     public class UserManager extends EventDispatcher 
     { 

      [Bindable] 
      public var addResult:String 

       [Bindable] 
      public var user:User 

      public function UserManager() 
      { 
      } 


      public function addUsersResult(Result:String):void {   
       addResult = Result 
       //Alert.show(event.result.toString()); 
       Alert.show(addResult); 
       backHome(); 
      } 

      private function addUsersFault(event:ResponseEvent):void { 
       Alert.show(event.faultString, "Error Executing Call"); 
      } 


      private function backHome():void { 
       this.dispatchEvent(new DesgManagementEvent(DesgManagementEvent.DES_HOME)); 

      } 

    } 
} 

我能够得到结果,但无法从自定义动作脚本类派送事件。我搜索并获得了你需要添加到显示列表的反弹。从动作脚本类调度事件

任何人都可以找出我要去哪里错了。 backHome方法根本没有被调用。

+0

你怎么知道你无法派发活动?这是一个编译器错误,听众没有收到任何东西,或什么? – 2009-12-15 14:46:03

+0

该方法backHome根本没有被调用。 – Kevin 2009-12-15 14:47:26

+0

好的,好的是addUsersResult()被调用?这是我看到呼叫回家()的唯一地方。 – 2009-12-15 14:56:14

回答

1

我相信你期待在事件映射中获得DesgManagementEvent,并且因为你没有看到它被处理,你相信bakcHome没有被调用。

如上所述,从不在显示列表中的对象组件调度的事件将永远不会到达事件映射。您需要传递调度程序并使用它来调度事件。您可以将它传递给构造函数(第一个objectBuilder)或作为属性(第二个objectBuilder)。

<EventHandlers type="{FlexEvent.INITIALIZE}"> 
    <ObjectBuilder generator="{MyManager}" constructorArguments="{scope.dispatcher}"/> 
    <ObjectBuilder generator="{MyManager2}"> 
    <Properties dispatcher="{scope.dispatcher}"/> 
    </ObjectBuilder> 
</EventHandlers> 

如果您使用构造函数,那么它会是这个样子:

public function MyManager(dispatcher:IEventDispatcher) 
{ 
    this.dispatcher = dispatcher; 
} 

然后,你将用你的调度属性调度事件:

dispatcher.dispatchEvent(new DesgManagementEvent(DesgManagementEvent.DES_HOME)); 
0

你确定在接收到addUsersResult()的字符串时收到字符串吗?