2011-06-22 24 views
0

私はitemInndrとしてtextInputを持つListを持っています。最初に、リストにはデータプロバイダのデータがロードされます。しかし、アイテムはtextInputsでレンダリングされるので、私は特定のアイテムの値を変更することができます。ListのItemRendererからItemの値を変更しました

しかし、以下の機能を使用して変更された項目の値にアクセスしようとしたとき、私はまだ私のトレース内の古い値を取得:

private function addItem(event:Event):void { 
    trace(myDataProvider.getItemAt(myList.selectedIndex).label); 
} 

誰かが私は新しい価値のために何をする必要があるかを私に伝えることができます利用できるようにする。私の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" 
       xmlns:components="components.*" 
       > 
<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:myComp1 text="{data.label}" id="myTextInput" enter="myTextInput_enterHandler(event)"/> 
</s:ItemRenderer> 

あなたのお手伝いを...ありがとうございます。

答えて

0

は、使用してみてください:

<?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" 
       xmlns:components="components.*" 
       > 
<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); 
      data.label = myTextInput.text; 
     } 


    ]]> 
</fx:Script> 

<components:myComp1 text="{data.label}" id="myTextInput" enter="myTextInput_enterHandler(event)"/> 
</s:ItemRenderer> 
+0

私は data.label = myTextInput.text 、設定次の行を試してみましたが、しかし、それはまだ動作しません。メインアプリケーションで次のことを実行すると、まだ私に古い値が与えられます。 trace(myDataProvider.getItemAt(1).label); //私がテストしてその値を変更しているインデックスの場合) OR trace(myDataProvider.getItemAt(myList.selectedIndex).label); ここに欠けているものはありますか? – FlexBoz

+0

'myTextInput_enterHandler'ハンドラにブレークポイントを置き、何が起こるかを確認します(どの変数がどの値で変更されているかを確認してください)。私はあなたが何かを見逃してしまったと思います。 – Constantiner

+0

実際に失敗したsmth..Thx – FlexBoz

関連する問題