Как мы можем прослушать событие, отправленное в PopUpWindow внутри родительского компонента? - PullRequest
1 голос
/ 18 декабря 2010

У меня есть всплывающее окно с двумя кнопками «Отправить» и «Отмена».При нажатии на кнопку «Отправить» я вызываю функцию и отправляю событие «отправить» с пузырем true.Я хочу справиться с этим внутри моего родительского приложения.Я уже зарегистрировал событие в родительском контейнере, а также во всплывающем экземпляре.

Inside Parent.mxml :


private function launchWarningPopUp():void {
        var win:Warning = PopUpManager.createPopUp(this, Warning, false ) as Warning; 
        win.addEventListener(SubmitQuizEvent.SUBMIT_QUIZ, submissionDone);
        this.addEventListener(SubmitQuizEvent.SUBMIT_QUIZ, submissionDone);
        PopUpManager.centerPopUp(win);
}

private function submissionDone():void{
   Alert.show('Inside SubmissionDoneTwo');
}

Inside Warning.mxml:

private function submitHanlder():void {
            dispatchEvent(new SubmitQuizEvent(SubmitQuizEvent.SUBMIT_QUIZ,true));
            PopUpManager.removePopUp(this);
}

Событие должно перейти к Parent.mxml.Я здесь что-то не так делаю или это просто невозможно?

Я застрял здесь, любая помощь в этом отношении будет принята с благодарностью.Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 18 декабря 2010

Вы должны добавить прослушиватель событий в systemManager, поскольку всплывающие окна являются прямыми потомками администратора системы

1 голос
/ 13 апреля 2012

Вы правы.всплывающее окно не является дочерним элементом компонента, который его создает.Это, как сказал Флориан, потомок systemManager, и события не всплывают, как вы могли ожидать.

0 голосов
/ 18 декабря 2010

Мне не удалось поймать это событие внутри моей функции, так как подпись отсутствовала.После того, как я добавил это, код работал.

private function submissionDone(event:SubmitQuizEvent):void{

            Alert.show('Inside SubmissionDone with signature');
}

================================================================================

У меня сейчас другая проблема.Событие регистрируется только тогда, когда я использую 'win.addEventListener ....' , а не с 'this.addEventListener ............'. Это удивительно для меня.

Если Parent.mxml является родительским для «win», то события, вызванные внутри «win», должны всплыть и должны быть перехвачены родителем. Этого не происходит.

Является ли 'win' дочерним элементом Parent.mxml?И рассматривается как внешний компонент?

Пожалуйста, дайте мне знать ваше мнение об этом ??

...