2012-01-03 27 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

相关问题