2011-12-07 1 views
0

varを更新し、creationcompleteでその関数を起動するのに問題があります。varを更新すると、別のコンポーネントの値を取得します

主なコンポーネントでは、私はvarアーティストを宣言しました。このvarは確実に機能し、値を持ちます。私はまた、別のコンポーネントにvarが必要です:プロファイルコンポーネント。私はそのvarを得ることができます:

newVar = Maincomp(this.parentApplication).artist; 

私は、プロファイルコンポーネントのAPIでnewVarを使用します。私は、mouseEventを使ってAPI関数を起動すると動作します。しかし、私はcreationCompleteでAPI関数を起動し、varが機能しないので、Nullを返します。私は、関与するすべてのヴァールを結びつけることが助けになると期待しましたが、そうではありません。どのようにこれを修正することができますか?

私の場合は、明確にするために余分なコード:メインコンプで

:プロファイルコンプで

 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を返します。私は、関連するヴァールをバインド可能にするとそれを修正すると思ったが、そうではない。どんな助け?

+0

もっとコードが役に立ちます。 – Frank

+0

この例でコードを拡張しました。私はそれが助けて欲しい。 –

答えて

0

あなたは、単にあなたのコンポーネント内のパブリックおよびバインド可能として変数を宣言し、ネストされたコンポーネントに沿ってすべてメインアプリケーションから変数をバインドするために探している場合:

メインアプリケーション

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

私はそれがあなたが探しているものであることを願っています:-)

+0

できるだけ早くこれを試してみます。ありがとう。 –

+0

私はこれを試しましたが、同じ問題が発生します:varの更新された値ではなく、Nullだけを取得します。 –

+0

creationCompleteイベントは、メインアプリまたは入れ子コンポーネントから取得していますか? – Jivago

関連する問題