Flex - Почему мое пользовательское событие не регистрируется следующим слушателем событий? - PullRequest
1 голос
/ 20 апреля 2010

printableInvoice.addEventListener (batchGenerated, printableInvoice_batchGeneratedHandler);

Результаты в этой ошибке: 1120: Доступ к неопределенному свойству batchGenerated. Я пробовал это как FlexEvent.batchGenerated и FlashEvent.batchGenerated.

С метаданными и функцией, которая отправляет четные данные в компоненте printableInvoice, все в порядке. Я создаю экземпляр printableInvoice как компонент mxml, а не через action-script, он хорошо позволяет поместить тег в строку mxml: batchGenerated = "someFunction ()"

Спасибо.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2010

batchGenerated должна быть строкой.

0 голосов
/ 20 апреля 2010

Похоже, что ваше приложение отправляет событие всякий раз, когда генерируется пакет.

Я предполагаю, что внутри вашего кода у вас есть что-то вроде:

dispatchEvent( new BatchEvent("batchGenerated") );

или

dispatchEvent( new BatchEvent(BatchEvent.BATCH_GENERATED) );

Второй способ обычно предпочтительнее, так как использование переменных вместо магических строк дает дополнительный уровень проверки времени компиляции.

Первым обязательным параметром событий обычно является тип события - Event.CHANGE (он же «изменение»), FlexEvent.VALUE_COMMIT (он же «valueCommit») и т. Д.

Это то, с чем фактически сравнивает слушатель события.

Таким образом, в приведенном выше коде прослушивателя событий вы хотели бы изменить строку на:

printableInvoice.addEventListener("batchGenerated", printableInvoice_batchGeneratedHandler);

или, надеюсь,

printableInvoice.addEventListener(BatchEvent.BATCH_GENERATED, printableInvoice_batchGeneratedHandler);

Если вы хотите пойти дальше, документация Flex подробно описывает , как система событий работает , и как события эффективно нацеливаются и обрабатываются с помощью Capture, Target и Пузырьковые фазы.

...