Получить переменную из ItemRenderer в главное приложение - PullRequest
0 голосов
/ 22 июня 2011

У меня есть список с TextInput в качестве средства визуализации элементов. Я хочу получить значение, введенное в TextInput (из TextInputItemRenderer), и передать его основному приложению для выполнения некоторых проверок (после нажатия enter на textInput - см. Код ниже).

Я знаю, что мы можем сделать это через диспетчерское событие, но я все еще не понимаю, как передать переменную из ItemRenderer в основное приложение.

Помощь Pls.

Спасибо

<?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 голосов
/ 12 июля 2012

Вместо того, чтобы пытаться получить доступ из MainApp к itemRenderer, я думаю, что вы можете сделать назад.Выполните одно из двух решений ниже:

  1. В itemRenderer присвойте значение, которое вы хотите проверить позже, общедоступной глобальной переменной в MainApp.Ограничение заключается в том, что вы можете включить проверку только в MainApp, а не в любом другом месте (другой itemRenderer, компонент, модуль и т. Д.)

  2. Используйте EvenBus для помещения значения в глобальный контейнер.Например, создайте статический экземпляр eventBus в AppUtils.В itemRenderer AppUtils.eventBus.dispatch () событие со значением, прикрепленным к нему каждый раз, когда значение изменяется.А затем снова используйте AppUtils.eventBus, чтобы addEventListener () получить значение и проверить, где вы хотите.Google AS3Commons для EventBus.

0 голосов
/ 22 июня 2011

Я не уверен, правильно ли я понял ваш вопрос, но поможет ли это?

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

...