I am looking for how to access components when all I have is its id string. 

In one experiment, shown below, for instance, I have a repeater to build a set 
of buttons 
from an array collection. When clicked, I want to select a particular component 
in the 
application. If I pass the id of the component in the arrayCollection, I get a 
reference of 
null, though I notice that in a regular array, I can pass the id and use it 
throughout the 
application.

Is there some way to access the particular component with only a string 
reference for its 
id—something like Application.application.component.id? Or must I run two 
arrays, using 
the index of the button clicked from the repeater, and using that index to 
select from 
another array of containers (e.g. containers = [copper, purple, red, magenta, 
gold]. Or am I 
on the right track below, but need to structure the original array differently, 
so that it can 
hold a pointer to the component? Or must I code the reference values inside a 
custom 
button and, during the repetition, use the event.target to collect those values 
from the 
custom component to use in the eventhandler.getRepeaterItem() method? 

I am not sure what header subject to look under to answer these questions. I am 
pretty 
sure I can simply test the string and, in a switch statment, get to the 
container, but I 
would like to understand what the possible tools are and under which heading to 
search to 
study more about it. Any help would be greatly appreciated.

Here is some sample code to illustrate the issue.

        //array of objects not bindable? //the component id is the container key
`       [Bindable]
        public var feedToButtonRepeater:Array = [{label: "copper", container: 
copper, 
level1Security: true, level2Security: "dubaiLand"},
                                                        {label: "purple", 
container: purple, level1Security: false, 
level2Security: "universalStudios"},
                                                        {label: "red", 
container: red, level1Security: true, 
level2Security: "disneyland"},
                                                        {label: "magenta", 
container: magenta, level1Security: false, 
level2Security: "sixflags"},
                                                        {label: "gold", 
container: gold, level1Security: true, 
level2Security: "junctioncity"}];

        <mx:ArrayCollection id= "buttonSetUp" source="{feedToButtonRepeater}"/>
        
        
        //example UIComponent
        <mx:Canvas id="copper" width="50" height="50" x="0" 
backgroundColor="{Color.COPPER_3}">
                <mx:Label text="copper"/>
        </mx:Canvas>

        //Repeater
        <mx:VBox  id="level3InnerContainer"  x="159" horizontalAlign="center" 
verticalScrollPolicy="off" horizontalScrollPolicy="off" y="140">
                <mx:Repeater id="myrep" dataProvider="{buttonSetUp}"> 
                  <mx:Button styleName="mainNavButton"   
blendMode="{BlendMode.ADD}" 
label="{myrep.currentItem.label}"  height="30" width="100"  
click="repeaterClickHandler(event.currentTarget.getRepeaterItem());"/>
                  </mx:Repeater> 
        </mx:VBox>


        //repeater event handler
        private function repeaterClickHandler(obj:Object):void
        {
                obj.container.visible = true; //obj.container is null, but 
obj.label = "copper" and 
obj.level1Security = true. 

        }

 



Reply via email to