【问题标题】:Get changed value of Item from ItemRenderer in List从 List 中的 ItemRenderer 获取 Item 的更改值
【发布时间】:2011-06-22 20:22:29
【问题描述】:

我有一个带有 textInput 作为 itemrenderer 的列表。最初,该列表加载了来自数据提供者的数据。但是,由于项目是在 textInputs 中呈现的,因此我可以更改特定项目的值。

但是当尝试使用下面的函数访问更改项的值时,我仍然在我的跟踪中得到旧值:

private function addItem(event:Event):void {
    trace(myDataProvider.getItemAt(myList.selectedIndex).label);
}

谁能告诉我我需要做什么才能使新值可用。我的 itemrenderer 如下图所示:

<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:s="library://ns.adobe.com/flex/spark" 
                xmlns:mx="library://ns.adobe.com/flex/mx" 
                xmlns:components="components.*"
                >
<s:layout> 
    <s:HorizontalLayout/> 
</s:layout> 

<fx:Script>
    <![CDATA[


        override public function set data( value:Object ) : void {
            super.data = value;
        }

        protected function myTextInput_enterHandler(event:FlexEvent):void
        {

            trace(myTextInput.text);
                            What Next??


        }


    ]]>
</fx:Script>

<components:myComp1 text="{data.label}" id="myTextInput" enter="myTextInput_enterHandler(event)"/>
</s:ItemRenderer>

感谢您的帮助..任何人。

【问题讨论】:

    标签: apache-flex actionscript-3 flex4 itemrenderer


    【解决方案1】:

    尝试使用:

    <?xml version="1.0" encoding="utf-8"?>
    <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
                    xmlns:s="library://ns.adobe.com/flex/spark" 
                    xmlns:mx="library://ns.adobe.com/flex/mx" 
                    xmlns:components="components.*"
                    >
    <s:layout> 
        <s:HorizontalLayout/> 
    </s:layout> 
    
    <fx:Script>
        <![CDATA[
    
    
            override public function set data( value:Object ) : void {
                super.data = value;
            }
    
            protected function myTextInput_enterHandler(event:FlexEvent):void
            {
                trace(myTextInput.text);
                data.label = myTextInput.text;
            }
    
    
        ]]>
    </fx:Script>
    
    <components:myComp1 text="{data.label}" id="myTextInput" enter="myTextInput_enterHandler(event)"/>
    </s:ItemRenderer>
    

    【讨论】:

    • 我试过设置,下一行,data.label=myTextInput.text 但还是不行。在主应用程序中执行以下操作时..它仍然给我旧值:trace(myDataProvider.getItemAt(1).label); //对于我正在测试并更改其值的索引)或 trace(myDataProvider.getItemAt(myList.selectedIndex).label);这里有什么遗漏吗?
    • myTextInput_enterHandler 处理程序中放置断点,看看会发生什么(什么变量随什么值而变化)。我认为你错过了一些明显的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2014-01-24
    • 1970-01-01
    相关资源
    最近更新 更多