2009-12-15 55 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()的字符串時收到字符串嗎?