Flex4 vs Flex3: Repeater vs DataGroup

 

repeaters太老土了!如果你過去使用過它,你會發出這種感概。現在,我們終於要擺脫它了。
Repeaters不僅有沉重的組件,而且接合使用很不方便。那麼,Flex 4中有什麼可以幫助我們嗎?DataGroups!
下面的例子都會用到這個數據:
  1. userData = new ArrayCollection();
  2.     userData.addItem({"fname":"Rich","lname":"Tretola"});
  3.     userData.addItem({"fname":"Joe","lname":"Smith"});
  4.     userData.addItem({"fname":"Bill","lname":"Johnson"});
複製代碼
Flex 3的例子使用了Repeater和一個名爲PersonRenderer的自定義組件:
主文件中的Repeater(Flex 3):
  1. <mx:VBox horizontalCenter="0" verticalCenter="0">
  2.     <mx:Repeater id="rep" dataProvider="{userData}">
  3.         <local:PersonRenderer person="{rep.currentItem}"/>
  4.     </mx:Repeater>
  5. </mx:VBox>
複製代碼
PersonRenderer 組件(Flex 3):
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" >
  3.     <mx:Script>
  4.         <![CDATA[
  5.             [Bindable]
  6.             public var person:Object;
  7.         ]]>
  8.     </mx:Script>
  9.     <mx:Label text="{person.fname} {person.lname}"/>
  10. </mx:HBox>
複製代碼
<ignore_js_op> 

使用了DataGroup和ItemRenderer的Flex4例子。代碼如下:
主文件中的DataGroup:
  1. <s:DataGroup itemRenderer="PersonRenderer"
  2.              dataProvider="{userData}"
  3.              verticalCenter="0" horizontalCenter="0">
  4.     <s:layout>
  5.         <s:VerticalLayout/>
  6.     </s:layout>
  7. </s:DataGroup>
複製代碼
PersonRenderer ItemRenderer (Flex 4):
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
  3.             xmlns:s="library://ns.adobe.com/flex/spark">
  4.     <s:Label text="{data.fname} {data.lname}"/>
  5. </s:ItemRenderer>
複製代碼
<ignore_js_op>