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));
}
}
}
我能够获得结果,但无法从自定义actionScript类调度该事件。我用谷歌搜索并获得了你需要将其添加到显示列表的反击。
任何人都可以弄清楚我哪里出错了。方法backHome根本没有被调用。
答案 0 :(得分: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));
答案 1 :(得分:0)
您确定在调用addUsersResult()
时收到类型字符串吗?