как мы можем получить доступ к компоненту в itemRenderer из основного mxml? - PullRequest
1 голос
/ 14 июля 2010

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

Итак, моя проблема в clickHandler, как я могу получить доступ к свойству details в itemRenderer из основного mxml?

Заранее спасибо за помощь

Ответы [ 3 ]

0 голосов
/ 14 июля 2010

Есть несколько способов подойти к этому.

Одним из них является использование глобального объекта Singleton, который содержит значение «ShowDetails». Каждый itemRenderer может получить доступ к этому объекту и изменить его настройки. ModelLocator от Cairngorm - один из примеров синглтона, который обычно используется таким образом. Я считаю, что у swiz есть нечто подобное. Вы также можете бросить свой собственный, если это необходимо.

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

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

0 голосов
/ 14 июля 2010

У вас может быть переменная в массиве DataProvider с именем 'show', которая имеет значение false. В itemrenderer свяжите видимое свойство компонента details с data.show.

Когда кнопка show нажата, просмотрите массив dataProvider и установите для свойства 'show' значение true. Это будет работать

Биш

0 голосов
/ 14 июля 2010

У меня будет булево значение на главном, из которого выключается itemRenderer. Доступ к itemRenderers из списка не рекомендуется, поскольку они перерабатываются, и операции не могут быть гарантированы.

Объяснение см. http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html

...