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

发布于 2024-11-16 12:10:57 字数 1216 浏览 2 评论 0原文

我有一个以 TextInput 作为项目渲染器的列表。我想获取在 TextInput 中输入的值(形成 TextInputItemRenderer)并将其传递给主应用程序以执行一些检查(在 textInput 上点击 Enter 后 - 请参阅下面的代码)。

我知道我们可以通过调度事件来完成此操作,但我仍然不明白如何将变量从 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>

I have a List with TextInput as item renderer. I want to get the value entered in the TextInput (form the TextInputItemRenderer) and pass it the main application to do some checks(upon tapping enter on the textInput -- see code below).

I know that we can do it thru dispatching event but I still don't understand how to pass a variable from the ItemRenderer to the main app.

Help Pls.

Thanks

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凤舞天涯 2024-11-23 12:10:58

我不确定我是否正确地回答了你的问题,但这有帮助吗?

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

i'm not sure if I got your question correctly but would this help?

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

许你一世情深 2024-11-23 12:10:58

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

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

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

Instead of trying to access from MainApp to itemRenderer, i think you can do backward. Follow one of two solutions below:

  1. In itemRenderer, assign value you want to check later to a public global variable on the MainApp. The limitation is you then only enable to check it on MainApp, not any where esle (other itemRenderer, component, module etc.)

  2. Use EvenBus to put the value to a global container. Create a static eventBus instance in AppUtils, for example. In itemRenderer, AppUtils.eventBus.dispatch() an event with the value attached to it each time the value changed. And then use AppUtils.eventBus again to addEventListener() to retrieve the value and check wherever you want. Google AS3Commons for EventBus.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文