我有一个包含以下内容的itemrenderer:
<s:TextInput x="10" y="41" width="60" name="txtprice"/>
我想从外面访问这个字段。 我怎么能这样做?
答案 0 :(得分:0)
您可以这样做:
<s:List id="list" itemRenderer="com.myDomain.myProject.MyRenderer" />
<s:Button label="click me" click="onButtonClick()"/>
<fx:Script>
<![CDATA[
import mx.core.IVisualElement;
protected function button1_clickHandler(event:MouseEvent):void
{
var myRenderer:CustomItemRenderer = list.dataGroup.getElementAt(0) as CustomItemRenderer;
}
]]>
</fx:Script>
由于itemRenderers通常被回收,因此不会为屏幕外的元素创建itemRenderer。也就是说,如果您的列表包含20个元素,并且只有前10个元素可见,那么如果您尝试获取第11-20个元素,getElementAt()
将返回null。如果将元素滚动到视图中,则会创建/回收渲染器,然后您可以检索它。
我似乎想起了一个更好的解决方法,但不会想到它。
请注意,还有另一种方法:list.dataGroup.getVirtualElementAt()
但这似乎对我来说与非虚方法的行为相同。
最后,请务必将渲染器中的TextInput
分配为id
,以便在检索渲染器后引用它:
<s:TextInput id="txtprice" />