我是一位長期的CF開發人員,他嘗試使用Flash Builder進行Flex移動開發,但在嘗試從簡單的數據庫查詢中輸出結果時感到沮喪。Flex中的<cfoutput>等效於什麼?
我希望做沿此線的東西...
<cfoutput query="myQ">
<s:Button label="#title#" click="myFunction(#id#)">
</cfoutput>
我是一位長期的CF開發人員,他嘗試使用Flash Builder進行Flex移動開發,但在嘗試從簡單的數據庫查詢中輸出結果時感到沮喪。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)不同。所以你可能會遇到很多不同之處。這是其中之一。
很好的解釋@ flexlex。從cf開發轉向flex的時候,我有過類似的經歷。在理解CF和Flex的UI設計之間的差異之前花了一段時間和很多小實現。 Flex還包含了大量的數據綁定和ajax類型的數據請求。 – jamesTheProgrammer 2012-01-04 21:24:44