Apache flex Flex:在SkinnableDataContainer';s项目
我是Flex的新手 我在这里寻找的是在SkinnableDataContainer创建的所有项目上添加一个Apache flex Flex:在SkinnableDataContainer';s项目,apache-flex,flex4,itemrenderer,Apache Flex,Flex4,Itemrenderer,我是Flex的新手 我在这里寻找的是在SkinnableDataContainer创建的所有项目上添加一个单击处理程序。我尝试了一些不起作用的方法,但我不知道什么是正确的方法 <s:SkinnableDataContainer id="teamList" itemRenderer="TeamSummaryRenderer"> <s:dataProvider> <s:ArrayList>
单击
处理程序。我尝试了一些不起作用的方法,但我不知道什么是正确的方法
<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
组件中声明处理程序。我更希望处理程序代码保持在应用程序级别
是否有一个简单的“Flex-ish”来实现这一点?否
<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"
/>
我认为您必须按照文档中的说明将处理程序保留在itemRenderer中。它们没有任何属性可以直接实现它。好的。。。我自己找到了答案:
<s:SkinnableDataContainer
rendererAdd="my_handler(event)"/>
private function my_handler(event:RendererExistenceEvent):void{
event.renderer.addEventListener(flash.events.MouseEvent.CLICK, clickhandler);
}
私有函数my_处理程序(事件:renderexistenceevent):void{
event.renderer.addEventListener(flash.events.MouseEvent.CLICK,clickhandler);
}
每次将新渲染器添加到容器中时,都会触发
rendererAdd
事件,该事件具有一个属性renderer
,即渲染器对象本身。因此,这里是在创建的每个渲染器上添加单击处理程序的地方。您还可以将SkinnableDataContainer子类化,并处理所有侦听的渲染器。然后,当触发eventhandler时,自定义SkinnableDataContainer将发送一个更改事件或其他事件。接下来,在您的应用程序中,您在该特定事件上设置了一个侦听器,然后您就可以…crap。。。那太难看了,不是吗?