Я не уверен, что лучше всего пытаться «сделать что-то» с формой в результате взаимодействия с пользователем - я, безусловно, открыт для альтернативы, если это лучший метод.
Существует свойство события MXML под названием «enter», которое применяется к s: TextInput, который вызывает обработчик событий AS, когда пользователь нажимает клавишу Enter в поле TextInput (представьте поле поиска - вы вводите поисковый запрос и нажимаете Enter).
Теперь в этом обработчике событий мне нужно получить родительский объект Form.Поскольку здесь мы обсуждаем лучшие практики, мне не интересно ссылаться на форму по идентификатору, если мой обработчик «enter» должен работать с разными формами.
Мой вопрос - что такоелучший способ получить дескриптор родительской формы цели события во Flex?Иерархия родитель-ребенок в Flex является абсолютно смехотворной (например: FileSyncFB0.WindowedApplicationSkin2.Group3.contentGroup.TabNavigator7.NavigatorContent10.SkinnableContainerSkin11.contentGroup.Group17.Panel18.PanelSkin23._PanelSkin_Group1.contents.contentGroup.directoryForm_A.FormSkin32.contentGroup.FormItem34.FormItemSkin36.contentGroup).
Серьезно.
Кто может это понять?
В приведенной выше цепочке тарабарщины объект, который я ищу, оказался directoryForm_A, но посмотрите, насколько он вложенный!Конечно, должно быть какое-то свойство FormItem, которое ссылается на его родительскую форму?
The MXML structure is much more meaningful semantically:
<s:Form id="directoryForm_A" width="100%">
<s:FormItem width="100%" label="URI">
<s:layout>
<s:BasicLayout/>
</s:layout>
<s:helpContent>
<s:Label text="Help String"></s:Label>
</s:helpContent>
<s:TextInput left="0" right="0" enter="handleUserSetRootDirectory(event)"/>
</s:FormItem>
</s:Form>
TextInput инициирует событие и является event.target.Следуя моей иерархии MXML, логической цепочкой может быть event.target.parent.parent, переводящий меня из TextInput в FormItem в Form, но, как вы можете видеть, прекрасная архитектура Spark с поддержкой скинов помещает все остальные экранные объекты и контейнеры между ними.1016 *
Есть ли какая-то другая иерархия, которую я могу использовать, которая имеет гораздо более семантически чистую структуру для прохождения?Или есть встроенное свойство или метод FormItems (по крайней мере), который позволяет вам получить доступ к их логическим родительским контейнерам?
Или я все еще слишком много думаю, как разработчик Flash / AS3, и есть другая парадигма Iдолжен просто поднять мои джинсы и усыновить?