2013-06-12 4 views
0

Архитектура основана на использовании следующих фреймворков: Flex, Cairngorm и Parsley.MessageHandler захвачен на разных вкладках - Flex

Я использую диспетчер с событием «AdicionarItemVendaMercadoriaEvent» в всплывающей панели: PopupPanel.

Я фиксирую событие с помощью [MessageHandler] внутри FormPM.as, введенного в Form.mxml. Внутри Form.mxml у меня есть mx: TabNavigator, и каждая вкладка находится в пределах одного s: NavigatorContent.

Оказывается, при наличии более одной открытой вкладки mx: TabNavigator отправленное событие фиксируется во всех формах всех вкладок.

Нормальная операция заключалась в том, чтобы зафиксировать единственное событие вкладки, куда была отправлена ​​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. 
} 

Вы могли бы хотеть рассмотреть 3.0 рамки команды Spicelib и иметь команду всплывать к панели, а затем добавить обратные вызовы ошибки/успеха в том, что: http://www.spicefactory.org/parsley/docs/3.0/manual/?page=commands&section=intro

+0

HandResult является приватным? Будет захвачен в PopupPanel? Но я хочу захватить событие своими свойствами в FormPM.as, а не PopupPanel. Я попробую отправить событие с его свойствами в PopupPanel и захватить [CommandResult] используемую петрушку. @dannrob – user2478505

+0

Эй, я обновил свой ответ, дело в том, что вы передадите свою функцию в PopupPanel, чтобы форма, инициировавшая всплывающее окно, получила результат, и никто другой. Рамки велики, но иногда сложнее, чем действительно обычные вызовы функций! – dannrob

+0

Проблема решена, спасибо за помощь. – user2478505

 Смежные вопросы

  • Нет связанных вопросов^_^