更新一个var,它从另一个组件获取它的值

时间:2011-12-07 22:03:54

标签: actionscript-3 flex flash-builder

我在创建完成时更新var并使用它触发函数时遇到了问题。

在主要组件中,我宣布了一个var艺术家。这个var肯定有效并且有价值。我还需要另一个组件中的var:一个配置文件组件。我可以通过以下方式获得该变量:

newVar = Maincomp(this.parentApplication).artist; 

我在配置文件组件中的API中使用newVar。当我使用mouseEvent启动API函数时,它可以工作。但是,我想在creationComplete上启动API函数,而不是var不工作:它返回Null。我希望让所有涉及的vars都可以帮助,但它并没有。怎么解决这个问题?

使我的案例更清晰的额外代码:

在主要比赛中:

        public function handleclick(cName:String):void
        {
            vName = "aVariableIGetFromAnAPI";
        }

在个人资料中:

                    public function zoekImages(event:FlexEvent):void
        {
            var api_URL:String = 'http://ws.audioscrobbler.com/2.0/';
            var api_imagemethod:String = 'artist.getImages';
            var api_key:String = '99f1f497c0bd598f1ec20571a38e2219';
            artistImage = DifficultierAPI(this.parentApplication).vName;
            var autocorrect:String = '1';
            var limit:String = '4'; 
            api_imagerequest = api_URL + '?method=' + api_imagemethod  + '&artist=' + artistImage + '&autocorrect=' + autocorrect + '&api_key=' + api_key + '&limit=' + limit;
            imageRequest.send(); // hier maak je connectie met lastfm
        }

此代码有效,但重点是,如果我使用MouseEvent调用它,此代码可以正常工作,但是当它需要在creationcomplete上启动时却没有。或者,它返回Null而不是值。我认为让所涉及的vars可绑定会修复它,但它并没有。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

如果您希望将变量从主应用程序绑定到嵌套组件,只需将变量声明为public并在组件中绑定:

主要应用

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication 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.*">

    <fx:Script>
        <![CDATA[
            [Bindable]
            public var myMainVar:String;

            protected function button1_clickHandler(event:MouseEvent):void
            {
                myMainVar = "Hi there!";
            }

        ]]>
    </fx:Script>

    <s:layout>
        <s:VerticalLayout/>
    </s:layout>

    <s:Button label="Click me to update the coponent's variable" click="button1_clickHandler(event)"/>

    <Components:MyCustomComponent myComponentVar="{myMainVar}"/>

</s:WindowedApplication>

嵌套组件

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

    <fx:Script>
        <![CDATA[
            [Bindable]
            public var myComponentVar:String;
        ]]>
    </fx:Script>

    <s:Label text="{myComponentVar}"/>

</s:Group>

我希望这是你正在寻找的东西: - )