Отправка событий из класса ActionScript - PullRequest
0 голосов
/ 15 декабря 2009
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 не вызывается вообще.

Ответы [ 2 ]

1 голос
/ 18 декабря 2009

Я полагаю, что вы ожидаете получить 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 голосов
/ 16 декабря 2009

Вы уверены, что получаете тип String при вызове addUsersResult()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...