Flex: добавление обработчика кликов для элементов SkinnableDataContainer - PullRequest
1 голос
/ 21 мая 2010

Я новичок в Flex.

Здесь я ищу добавление обработчика click ко всем элементам, созданным SkinnableDataContainer. Я попробовал несколько вещей, которые не сработали, и я понятия не имею, как правильно это сделать.

<s:SkinnableDataContainer id="teamList"
                          itemRenderer="TeamSummaryRenderer">
    <s:dataProvider>
        <s:ArrayList>
            <fx:Object teamName="A super team 1"/>
            <fx:Object teamName="A super team 2"/>
            <fx:Object teamName="A super team 3"/>
        </s:ArrayList>
    </s:dataProvider>
</s:SkinnableDataContainer>

Кроме того, я не хочу объявлять обработчик в моем пользовательском TeamSummaryRenderer компоненте. Я бы предпочел, чтобы код обработчика оставался на уровне приложения.

Есть ли простой «гибкий подход» для достижения этой цели?

Ответы [ 3 ]

2 голосов
/ 21 мая 2010

номер

<s:SkinnableDataContainer
    Properties
    autoLayout="true"
    clipAndEnableScrolling="false"
    dataProvider="null"
    horizontalScrollPosition="null"
    itemRenderer="null"
    itemRendererFunction="null"
    layout="VerticalLayout"
    typicalItem="null"
    verticalScrollPosition="null"

    Events
    rendererAdd="No default"
    rendererRemove="No default"
  />

http://opensource.adobe.com/wiki/display/flexsdk/Spark+SkinnableDataContainer

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

1 голос
/ 24 мая 2010

Хорошо ... Я нашел ответ сам:

<s:SkinnableDataContainer
rendererAdd="my_handler(event)"/>

private function my_handler(event:RendererExistenceEvent):void{
    event.renderer.addEventListener(flash.events.MouseEvent.CLICK, clickhandler);
}

Событие rendererAdd запускается каждый раз, когда новый контейнер визуализации добавляется в контейнер, и у него есть свойство renderer, которое является самим объектом визуализатора. Итак, вот место для добавления обработчика щелчков на каждом из созданных средств визуализации.

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

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

...