从ItemRenderer获取变量到主应用程序

时间:2011-06-22 08:58:04

标签: flex flex4 itemrenderer

我有一个带有TextInput的List作为项呈示器。我想获取在TextInput中输入的值(形成TextInputItemRenderer)并将其传递给主应用程序以进行一些检查(在点击输入textInput时 - 请参阅下面的代码)。

我知道我们可以通过调度事件来完成,但我仍然不明白如何将一个变量从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" 
                autoDrawBackground="true" xmlns:components="components.*" width="100%"
                >

    <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:ClearableTextInput text="{data.label}" id="myTextInput" enter="myTextInput_enterHandler(event)"/>

</s:ItemRenderer>

2 个答案:

答案 0 :(得分:0)

我不确定我是否正确地提出了您的问题,但这有帮助吗?

http://www.ajibanda.blogspot.com/2011/02/changing-currentstate-of-main-and.html

答案 1 :(得分:0)

我认为你可以向后做,而不是尝试从MainApp访问itemRenderer。请遵循以下两种解决方案之一:

  1. 在itemRenderer中,将稍后要检查的值分配给MainApp上的公共全局变量。限制是你只能在MainApp上检查它,而不是任何esle(其他itemRenderer,组件,模块等)

  2. 使用EvenBus将值放入全局容器。例如,在AppUtils中创建一个静态eventBus实例。在itemRenderer中,AppUtils.eventBus.dispatch()每次更改值时附加值的事件。然后再次使用AppUtils.eventBus addEventListener()来检索值并检查您想要的位置。适用于EventBus的Google AS3Commons。