2012-01-03 6 views
3

私はFlash BuilderでFlexのモバイル開発に取り掛かろうとしている長年のCF開発者ですが、単純なデータベースクエリーから結果を出力しようとすると、不満を感じています。私はこの線に沿って何かを探していますFlexの<cfoutput>に相当するものは何ですか?

...

<cfoutput query="myQ"> 
    <s:Button label="#title#" click="myFunction(#id#)"> 
</cfoutput> 

答えて

3

あなたは最高のitemRendererにリストベースのクラスを使用するために適していることになるだろう。概念的にこのように:

<sList dataProvider="myQ"> 
<s:itemRenderer> 
    <fx:Component> 
    <s:ItemRenderer dataChange="onDataChange(event)"> 
    <fx:Script> 
     protected function onDataChange(event:FlexEvent):void{ 
      myButton.label = data.title; 
     } 
     protected function myFunction(event:MouseEvent):void{ 
      // access the ID using data.id 
     } 
    </fx:Script> 
    <s:Button id="myButton" click="myFunction(event)" /> 
    <s:ItemRenderer> 
    </fx:Component> 
</s:itemRenderer> 

</s:List> 

このコードはブラウザで書かれています。おそらく完璧ではありませんが、あなたに近似を与えるべきです。リストベースのクラスを理解するには、レンダラーがFlexでどのように動作するかを調べる必要があります。特にレンダリング業者のリサイクル

表示されているようなループを作成する場合、ループ内に100個のアイテムがあると、100個のボタンがパフォーマンスの問題を引き起こす可能性があります。代わりにリストとレンダラーを使用します。画面に表示されている項目のみがレンダリングされます。リストをスクロールすると、他の項目がスクロールして表示されます。表示されなくなった項目はレンダリングされなくなりました。だから、100個のオブジェクトの代わりにメモリには、実際には画面に表示される10個程度のものがあります。これは、私のインラインitemRendererがデータ変更イベントをリッスンする理由です。データが変更されたときにレンダリングが更新されます。

リストをスクロールすると、すでに作成されているレンダラーに次のデータ項目が送信されます。

UI開発(Flex)はサーバー側の開発(ColdFusion)と同じではありません。おそらく多くの違いに遭遇するでしょう。これはその一つです。

+1

良い説明@flextras。私はcf開発からフレックスに移行するときに、似たような経験をしていました。 CFとFlexのUIデザインの違いを理解する前に、しばらくの間、小さな実装を行った。 Flexには、多くのデータバインディングとajaxタイプのデータリクエストも含まれていました。 – jamesTheProgrammer

関連する問題