私はFlash BuilderでFlexのモバイル開発に取り掛かろうとしている長年のCF開発者ですが、単純なデータベースクエリーから結果を出力しようとすると、不満を感じています。私はこの線に沿って何かを探していますFlexの<cfoutput>に相当するものは何ですか?
...
<cfoutput query="myQ">
<s:Button label="#title#" click="myFunction(#id#)">
</cfoutput>
私はFlash BuilderでFlexのモバイル開発に取り掛かろうとしている長年のCF開発者ですが、単純なデータベースクエリーから結果を出力しようとすると、不満を感じています。私はこの線に沿って何かを探していますFlexの<cfoutput>に相当するものは何ですか?
...
<cfoutput query="myQ">
<s:Button label="#title#" click="myFunction(#id#)">
</cfoutput>
あなたは最高の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)と同じではありません。おそらく多くの違いに遭遇するでしょう。これはその一つです。
良い説明@flextras。私はcf開発からフレックスに移行するときに、似たような経験をしていました。 CFとFlexのUIデザインの違いを理解する前に、しばらくの間、小さな実装を行った。 Flexには、多くのデータバインディングとajaxタイプのデータリクエストも含まれていました。 – jamesTheProgrammer