2008-12-18 4 views
0

У меня есть 2 компонента, например (editor.mxml с использованием mx: windows), когда я нажимаю кнопку редактирования, я хочу получить текущее значение из поля данных другого компонента? (datagrid.mxml с использованием окна mx:)Доступ к компоненту Flex для другого компонента

Я знаю, как получить доступ к основному файлу данных MXML с помощью метода parentDocument или Application.application, но заблокирован, если я хочу получить доступ другим способом, как указано выше. Держите код как можно более простым.

+0

ли оба компонента, запущенные из родительского приложения ? – defmeta

ответ

1

Вы можете либо сделать dependency injection, то есть дать компоненту A ссылку на компонент B таким образом, что они могут общаться напрямую (пример тесной связи,) или иметь оба компонента взаимодействуют посредством общих mediator с использованием событий (например, более свободно муфта.)

Оба эти варианта будут реализованы везде, где вы создаете эти компоненты (A и B в этом примере) и добавляете их в список отображения.

0

Это может быть более сложным, чем это заслуживает, и это приносит паттерн-лихорадку, но вы можете использовать класс посредника, который прослушивает событие CLICK от кнопки и знает достаточно о другом компоненте для запроса его свойства. Он может даже передавать эти данные с помощью настраиваемого события, которое прослушивает кнопка.

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

Приветствия

0

Попробуйте это:

FlexGlobals.topLevelApplication 

Это указывает свой корень. Из корня вы можете захватить каждый элемент, который вы хотите.

0

Вы также можете добавить идентификатор для пользовательского компонента, как это,

<custom:Editor id="myCustomComponent"> 

    </Editor:AddressForm> 

и

доступа значение вашего DataGrid как это,

var data:ArrayCollection = myCustomComponent.DatagridID.dataProvider; 
Смежные вопросы