서비스 요청을 실행하는 명령이 있습니다. 결과 처리기에서 결과 데이터를 기반으로 일부 논리를 수행하고 있습니다. 논리가 특정 기준을 충족하는 경우 확인 팝업이 표시됩니다. 사용자가 확인 팝업에서 계속 버튼을 클릭하면 파슬리 이벤트를 전달하는 메소드가 호출됩니다. 파슬리 사건은 잡히지 않았습니다. 그러나 결과 메서드 내부에서 파슬리 이벤트를 전달하면 잡히게됩니다. 결과 메서드 외부에서 이벤트를 디스패치 할 때 이벤트가 포착되지 않는 이유는 무엇입니까? 예를 들어 플렉스 - 파슬리 - 이벤트가 결과 핸들러의 메소드에서 전달되지 않습니다
...[MessageDispatcher]
[Bindable]
public var dispatcher:Function;
내가 명령 내부에서 일부 서비스 호출을 실행 :
public function result(data:Object):void
{
if (add some logic here based off data)
AlertHelper.showContinueQuestion(onSelection, "Are you sure you want to continue?");
}
경우 :
public function execute(event:SomeEvent):AsyncToken
{
return service.callService(event.type, false);
}
는 지금과 같은 결과 핸들러가 사용자가 확인 팝업에서 Continue 버튼을 클릭하면 onSelection 메서드가 호출됩니다.
private function onSelection():void
{
dispatcher(new SomeEvent(SomeEvent.UPLOAD));
}
파슬리 이벤트, SomeEvent가 잡히지 않았습니다. 그러나 if 문 다음에 해당 이벤트를 전달하면 잡히고 잘 작동합니다. 왜 결과 처리기 외부에서 파견 될 때 잡히지 않는지? 나는 다른 명령들도 시도해 보았고 똑같은 일을한다.
SomeEvent를 잡아 내야하는 처리기와 첨부 된 부분을 볼 수 있습니까? –
이것은 아마도 결과 처리기가 실행을 마자 마자 파슬리 컨텍스트에서 제거되는 동적 명령과 관련이 있습니다. 이상하게 들리지만, 삽입 된 [MessageDispatcher]가 여전히 이벤트를 전달할 수 있다고 추측했을 것입니다 ... onSelection() 메소드가 호출되고 dispatcher가 null이 아닌지 확인할 수 있습니까? 일반적으로 경고를 트리거하는 별도의 명령을 사용합니다. 즉, 결과 처리기에서 "경고 표시"이벤트를 발송합니다. "show alert"명령은'AsyncToken'을 반환 할 수 있고 자체 결과 핸들러를 가질 수 있습니다. –
앤드류, 나는 DynamicCommand를 포함하는 구성 파일을 사용하고 있습니다 : –
anad2312