diff --git a/src/robotlegs/bender/extensions/signalCommandMap/impl/SignalCommandTrigger.as b/src/robotlegs/bender/extensions/signalCommandMap/impl/SignalCommandTrigger.as index 5f91e98..66c5521 100644 --- a/src/robotlegs/bender/extensions/signalCommandMap/impl/SignalCommandTrigger.as +++ b/src/robotlegs/bender/extensions/signalCommandMap/impl/SignalCommandTrigger.as @@ -103,6 +103,7 @@ public class SignalCommandTrigger implements ICommandTrigger for each (var mapping:ICommandMapping in mappings) { mapSignalValues(signal.valueClasses, valueObjects); + mapSignal(signal); if (guardsApprove(mapping.guards, _injector)) { _once && removeMapping(mapping); @@ -113,12 +114,24 @@ public class SignalCommandTrigger implements ICommandTrigger command.execute(); } unmapSignalValues(signal.valueClasses, valueObjects); + unmapSignal(); } if ( _once ) removeSignal(commandClass ); } + private function mapSignal(signal:ISignal):void { + unmapSignal(); + _injector.map(ISignal, 'trigger').toValue(signal); + } + + private function unmapSignal():void { + const hasMapping: Boolean = _injector.hasDirectMapping(ISignal, 'trigger'); + if(hasMapping) + _injector.unmap(ISignal, 'trigger'); + } + protected function mapSignalValues(valueClasses:Array, valueObjects:Array):void { for (var i:uint = 0; i < valueClasses.length; i++) { _injector.map(valueClasses[i]).toValue(valueObjects[i]);