2010-05-21 3 views
1

전 Flex를 처음 사용했습니다.Flex : SkinnableDataContainer의 항목에 클릭 핸들러 추가

여기서 찾고자하는 것은 SkinnableDataContainer가 만든 모든 항목에 click 처리기를 추가하는 것입니다. 나는 작동하지 않는 몇 가지 것을 시도했고, 나는 그것을 할 올바른 방법이 무엇인지 모른다.

<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 구성 요소에 처리기를 선언하고 싶지 않습니다. 처리기 코드가 응용 프로그램 수준에서 유지되는 것이 좋습니다.

간단한 '플렉스 틱'이 있나요?

답변

1

좋아요 ... 나는 대답 나 자신을 발견 :

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

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

rendererAdd 이벤트가 새로운 렌더러가 컨테이너에 추가 될 때마다 트리거, 그리고 그것을 렌더러 객체 자체 속성 renderer 있습니다. 생성 된 모든 렌더러에 클릭 핸들러를 추가하는 곳입니다.

2

번호

<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에 처리기를 유지하는 것 같아요. 그들은 그것을 직접적으로 성취 할 수있는 속성이 없습니다.

+0

쓰레기 ... 그건 못생긴가요? – sebpiq

+0

흠 ... 어도비는 마음 속에 뭔가를 생각했을지도 모른다 ... – Thalaivar

0

SkinnableDataContainer를 서브 클래스 화하고 거기에서 수신하는 모든 렌더러를 처리 할 수도 있습니다. 그런 다음 이벤트 핸들러가 트리거되면 사용자 정의 SkinnableDataContainer가 변경 이벤트 또는 다른 이벤트를 전달합니다. 다음으로, 응용 프로그램에서 특정 이벤트에 대한 청취자를 설정하면 거기에 ...