2013-06-12 15 views
0

이 아키텍처는 Flex, Cairngorm 및 Parsley와 같은 프레임 워크를 기반으로합니다.MessageHandler는 다양한 탭에서 캡처됩니다. - Flex

popuppanel : PopupPanel 내에서 "AdicionarItemVendaMercadoriaEvent"이벤트와 함께 디스패처를 사용합니다.

Form.mxml에 삽입 된 FormPM.as 내의 [MessageHandler]를 사용하여 이벤트를 캡처합니다. Form.mxml 내에 mx : TabNavigator가 있으며 각 탭은 하나의 NavigatorContent 내에 있습니다.

하나 이상의 열린 탭 mx : TabNavigator가있는 경우 모든 이벤트의 형태는 모든 탭의 모든 Form에 캡처됩니다.

정상적인 작업은 모든 탭이 아닌 PopupPanel이 전달 된 탭의 유일한 이벤트를 캡처하는 것이 었습니다.

이 문제를 해결하기위한 제안 사항이 있으시면 알려주세요.

감사합니다.

+1

을 탭 참조를 메시지에 저장하고 핸들러에서 확인하십시오. – dvdgsng

+0

예. 약간 더 최적의 접근법은 각 탭에 대해 다른 이벤트'type' (예 :'AdicionarItemVendaMercadoriaEvent.TAB_ONE','AdicionarItemVendaMercadoriaEvent.TAB_TWO' 등 사용)을 사용하는 것입니다. 이 방법으로, 당신이 메시지를 파견 할 때, 그것들을 모두 호출하는 것이 아니라 단지 하나의 [MessageHandler]가 호출 될 것이다. –

+0

사용자가 단추를 클릭하여 추가 할 때 탭이 동적으로 생성됩니다. 따라서 각 플랩에 대해 이벤트를 다르게 생성하는 것이 이상적입니다. @dvdgsng – user2478505

답변

0

직선 함수 콜백을 사용하는 것은 어떻습니까?

PopUpPanel을 만들 때 팝업이 닫힐 때 실행될 함수 콜백을 전달하십시오. 이벤트를 사용하는 대신 함수를 호출하면됩니다. 즉

내부 FormPM :

public function showPopup():void 
{ 
    var popup:PopUpPanel = new PopUpPanel(); 
    popup.onCompletion = handleResult; 
    PopUpManager.addPopUp(popup, ...); 
} 

private function handleResult(someData:*):void 
{ 
    // My popup has completed.. what do I want to do with the result. 
} 

당신은 그에게 오류/성공 콜백을 추가 한 후 Spicelib 3.0 명령 프레임 워크를 고려하고 명령을 당신의 패널을 팝업하고 할 수 있습니다 : 당신은 할 수 http://www.spicefactory.org/parsley/docs/3.0/manual/?page=commands&section=intro

+0

handleResult는 비공개입니까? PopupPanel에서 소유하고 있습니까? 그러나 PopupPanel이 아닌 FormPM.as에서 속성을 사용하여 이벤트를 캡처하고 싶습니다. PopupPanel에서 속성을 가진 이벤트를 dispacher에 시도해보고 파슬리에 사용 된 [CommandResult]를 캡처합니다. @ dannrob – user2478505

+0

이봐, 내 대답을 업데이 트했습니다, 요점은 당신이 PopupPanel에 팝업을 시작한 폼이 결과와 아무도 얻지 못하도록 함수를 전달한다는 것입니다. 프레임 워크는 훌륭하지만 때로는 표준 함수 호출 만 복잡합니다. – dannrob

+0

문제가 해결되었습니다. 모든 도움을 주셔서 감사합니다. – user2478505