2012-01-03 28 views
3

我是一位長期的CF開發人員,他嘗試使用Flash Builder進行Flex移動開發,但在嘗試從簡單的數據庫查詢中輸出結果時感到沮喪。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

很好的解釋@ flexlex。從cf開發轉向flex的時候,我有過類似的經歷。在理解CF和Flex的UI設計之間的差異之前花了一段時間和很多小實現。 Flex還包含了大量的數據綁定和ajax類型的數據請求。 – jamesTheProgrammer 2012-01-04 21:24:44

相關問題