У меня есть собственный компонент shopView, который является компонентом с поддержкой скинов MXML.У меня есть класс контроллера под названием ShopController, который заботится о показе этого компонента во всплывающем окне, обновлении информации, отображаемой в компоненте и т. Д.
Теперь я хотел бы манипулировать некоторыми из подкомпонентов этого ShopView после того, как он был создан изконтроллер после создается ShopView (событие creationComplete ())
Итак, я прикрепил прослушиватель событий, который стажер выполняет некоторый процесс инициализации
creationComplete="init(event)"
инициализации() функция
private function init(event:FlexEvent):void{
event.stopImmediatePropagation();
initMenus();
initSlots();
dispatchEvent(event);
}
Присоединено еще одно событие завершения создания из класса контроллера
_shop.addEventListener(FlexEvent.CREATION_COMPLETE,onShopCreated);
* _shop является экземпляром ShopView *
Теперь, если вы видите функцию init (), там я прекращаю распространение события, выполняю некоторый процесс инициализации и после этого отправляю событие (контроллер магазина выполняет остальную часть работы)
Сейчас, это приводит к сбою приложения, потому что событие crationComplete ShopView вызывается рекурсивно.Я думал, что dispatchEvent будет распространяться на другие листеры, но похоже, что он распространяется обратно на тот же компонент.
Я исправил это, удалив строки e.stopImmediatePropagation () и dispatchEvent (событие)из функции init ().Но я хочу знать, почему это происходит так?
Это известная проблема для компонентов mxml / flex?ИЛИ это ожидаемое поведение?
Обновление: я не делаю то же самое в .as, как я сказал ниже.Получил ответ, в основном это моя глупость:)
, потому что я не видел такого поведения, когда пишу классы .as, где я предотвращаю распространение и отправляю событие на основе бизнес-логики.
Заранее спасибо.