【问题标题】:Flex 4.6 with itemrenderer with textinput inside带有 itemrenderer 的 Flex 4.6,里面带有 textinput
【发布时间】:2012-08-22 16:06:57
【问题描述】:

我有一个 itemrenderer,它包含:

<s:TextInput x="10" y="41" width="60" name="txtprice"/>

我想从外部访问该字段。 我该怎么做?

【问题讨论】:

  • access to this field from outside 是什么意思?请更具体。
  • 为什么你想访问TextInput?你想用它做什么?我问是因为@SunilD.'s answer是您提出的问题的正确答案,但我怀疑这不是您问题的正确解决方案。但我不确定,因为您留下太多信息无法猜测。

标签: apache-flex itemrenderer


【解决方案1】:

你可以这样做:

<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>

由于 itemRenderer 通常被回收,因此不会为屏幕外的元素创建 itemRenderer。也就是说,如果您的列表有 20 个元素,并且只有前 10 个是可见的,那么如果您尝试获取第 11-20 个元素,getElementAt() 将返回 null。如果将元素滚动到视图中,则会创建/回收渲染器,然后您可以检索它。

我似乎记得有一个更好的方法来处理这个问题,但没有想到。

注意还有另一种方法:list.dataGroup.getVirtualElementAt(),但这对我来说似乎与非虚拟方法的行为相同。

最后,确保在渲染器中为TextInput 分配id,以便在检索渲染器后引用它:

<s:TextInput id="txtprice" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-14
    • 2012-06-13
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多