将变量绑定到ItemRender组件属性

时间:2011-05-16 07:28:18

标签: flex actionscript-3 flash-builder itemrenderer

我想将我的ActionScript中的变量绑定到ItemRender中的组件的属性。但我总是得到这个错误:

  

1120:访问未定义的属性   currentRoom。

这是我的代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:solutionItems="com.barco.components.ControlRoomConfigurator.solutionItems.*">
    <mx:Script>
        <![CDATA[
            import com.barco.VO.ControlRoomConfigurator.Room;

            [Bindable] private var myArrayCollection:ArrayCollection;
            [Bindable] public var currentRoom:Room;


        ]]>
    </mx:Script>
    <mx:List id="listVideoWalls" 
         borderThickness="0"
         dataProvider="{myArrayCollection}" >
        <mx:itemRenderer>
            <mx:Component>
                <solutionItems:displaySolutionItem solutionId="{data.meetsRequirements.getItemAt(currentRoom.id)}" />
            </mx:Component>
        </mx:itemRenderer>
    </mx:List>
</mx:Canvas>

我想在ItemRenderer组件中使用对象currentRoom。 你是怎么做到的?

我希望你理解我的问题。

谢谢!

文森特

2 个答案:

答案 0 :(得分:4)

问题是<mx:Component>定义声明了一个新范围。因此它无法直接访问当前的mxml文件范围。 <mx:Component>只是进行原型设计的捷径,可以快速草拟。但是从范围的角度来看,它就像在单独的文件中提取组件一样。所以提取它并停止混淆:)

答案 1 :(得分:2)

一个简短的解决方案是使用 outerDocument 作为

solutionId="{data.meetsRequirements.getItemAt(outerDocument.currentRoom.id)}"

有关详细信息,请阅读Understanding Flex itemRenderers

希望有所帮助