【转】Flex Repeater几个重要属性和方法

 转发地址:http://blog.sina.com.cn/s/blog_5ed17a730100illb.html

Repeater类的几个重要属性和方法:

  • currentItem
  • getRepeaterItem()
  • instanceIndices
  • repeaters
  • repeaterIndices
下面逐一说明:
currentItem,在repeater循环过程中,这应该是最为重要的了,这个属性代表了当前正在处理的dataProvider对应的对象,一般用于与组件的属性(例如:text、label、hint等)绑定时使用
<? xml version="1.0" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml" >  

    
< mx:Script >
        
<![CDATA[
        
            public function labelTrace():void {
                for (var i:int 0; nameLabel.length; i++)
                    trace(nameLabel[i].text);
            }
        
]]>
    
</ mx:Script >

    
< mx:Model  id ="catalog"  source ="../assets/repeater/catalog.xml" />
    
< mx:Label  id ="title"  text ="Products:" />

    
< mx:Repeater  id ="r"  dataProvider ="{catalog.product}"  
            startingIndex
="1" >
        
< mx:VBox  id ="vb" >
            
< mx:Label  id ="nameLabel"
                text
=" {r.currentItem.name} $ {r.currentItem.price}"
                width
="200" />
            
< mx:Label  id ="shipLabel"  
                text
="Free shipping:  {r.currentItem.freeship}" />
            
< mx:Spacer />
        
</ mx:VBox >
    
</ mx:Repeater >

    
< mx:Button  label ="Trace"  click ="labelTrace();" />
</ mx:Application >

getRepeaterItem(index: integer = null),repeater一旦循环完毕,currentItem就不能够再使用,可以使用getRepeaterItem()获取当前组件对应的数据对象;在多个repeater嵌套的情况下,可以指定index参数,在为空的情况,表示是最内层的repeater,如果等于0,表示是最外层repeater,1为第二层,依此类推
<? xml version="1.0" ?>  
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml" >

  
< mx:Script >  
    
<![CDATA[
      public function clicker(cName:String):void 
         foolabel.text=cName; 
        
    
]]>
  
</ mx:Script >  

  
< mx:Label  id ="foolabel"  text ="foo" ></ mx:Label >  
 
  
< mx:Model  id ="data" >  
    
< color >
      
< colorName > Red </ colorName >  
      
< colorName > Yellow </ colorName >  
      
< colorName > Blue </ colorName >
    
</ color >
  
</ mx:Model >  
  
< mx:ArrayCollection  id ="myAC"  source ="{data.colorName}" />

  
< mx:Repeater  id ="myrep"  dataProvider ="{myAC}" >  
    
< mx:Button  click ="clicker( event.currentTarget.getRepeaterItem() );"
      label
="{myrep.currentItem}" />  
  
</ mx:Repeater >  
</ mx:Application >

instanceIndices,用于在事件中获取当前组件对应的数据索引编号,也就是dataProvider中的索引,从而可以通过这个编号访问底层数据
<? xml version="1.0" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml" >

  
< mx:Script >
    
<![CDATA[
      [Bindable]
      public var myArray:Array=[1,2,3,4,5,6,7,8];
    
]]>
  
</ mx:Script >

  
< mx:ArrayCollection  id ="myAC"  source ="{myArray}" />
  
< mx:Repeater  id ="list"  dataProvider ="{myAC}"  count ="4"  startingIndex ="2" >
    
< mx:HBox >
      
< mx:Button  label ="Click Me"
        click
="myText[ event.target.instanceIndices ].text=
        
event.target.instanceIndices.toString();" />
      
< mx:TextInput  id ="myText" />
    
</ mx:HBox >
  
</ mx:Repeater >
</ mx:Application >

repeaters属性,是获取组件对应的repeater对象,目前我还没有发现这个属性有什么用处
<? xml version="1.0" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml" >  

  
< mx:Script >
    
<![CDATA[
      import mx.controls.Alert;
      [Bindable]
      public var myArray:Array=[1,2];
    
]]>
  
</ mx:Script >

  
< mx:ArrayCollection  id ="myAC"  source ="{myArray}" />
  
< mx:Repeater   id ="repeater1"  dataProvider ="{myAC}" >
    
< mx:Repeater   id ="repeater2"  dataProvider ="{myAC}" >
      
< mx:Button
        
label ="[{repeater1.currentIndex},{repeater2.currentIndex}]"
        click
="Alert.show( event.target.repeaters[1]. id);" />
    
</ mx:Repeater >
  
</ mx:Repeater >
</ mx:Application >

repeaterIndices,当repeater从0开始循环(也就是说startIndex="0")的时候,和instanceIndices是一样的;但是,当startIndex不等0的时候,repeaterIndices始终是数据对象在dataProvider中的真正索引,而不像instanceIndices始终是从0开始编号的
<? xml version="1.0" ?>
< mx:Application  xmlns:mx ="http://www.adobe.com/2006/mxml" >  

  
< mx:Script >
    
<![CDATA[
      [Bindable]
      public var myArray:Array [1,2,3,4,5,6,7,8];
    
]]>
  
</ mx:Script >

  
< mx:Repeater  id ="list"  dataProvider ="{myArray}"  
    startingIndex
="2"  count ="4" >
  
< mx:HBox >
    
< mx:Button  id ="b"  label ="Click Me"
      click
="myText[event.target.repeaterIndices-list.startingIndex].text=
        
event.target.repeaterIndices.toString() ;" />
      
< mx:TextInput  id ="myText" />
    
</ mx:HBox >
  
</ mx:Repeater >
</ mx:Application >
从上面的例子看,repeaterIndices应该是从2开始的,而instanceIndices是从0开始编号的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值