Question

I have a mediator created in Robotlegs, and its related view would dispatch two different kinds of events. When the mediator captures the event, it would just simply dispatch the event. The problem I ran into was that the first event is re-dispatched flawlessly, but the 2nd event was not dispatched.

However, if I manually assign a different handler to the 2nd event, the event is properly captured.

Below is the relevant code:

public class MyMediator extends Mediator
{
    [Inject]
    public var view:MyView;

    public override function onRegister():void
    {
        super.onRegister();

        addViewListener( SomeEventTypeA.COOL_EVENT, dispatch, SomeEventTypeA ); // This event is dispatched correctly
        addViewListener( SomeEventTypeB.STUCK, dispatch, SomeEventTypeB );  // This one is not correctly dispatched

        //A twist, if I uncomment the following code, the event is captured by its handler
        //addViewListener( SomeEventTypeB.STUCK, view_stuck, SomeEventTypeB );
    }

    private function view_stuck( event:SomeEventTypeB ):void
    {
        //ah ha, this is called correctly if the above relevant line is uncommented
    }
}
Was it helpful?

Solution

Found the cause:

The event needs to have a proper clone method in order to be re-dispatched correctly. See related link:

http://knowledge.robotlegs.org/kb/application-architecture/why-doesnt-my-event-trigger-the-command-it-is-mapped-to

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top