Flex:使用list作为转发器...如何将信息从dataprovider传递给被调用的自定义模块?

时间:2011-07-28 18:27:03

标签: flex list itemrenderer

使用List组件而不是Repeater时,如何将值从dataprovider传输到itemRenderer?

例如,我有一个数组集合(projectsAC),其中包含具有以下结构的数组:

projectsAC(
    0:
        Array(
                0:number
                1:string
                2:string
                3:string
                4:XMLList
        )
    1:
        Array(
                0:number
                1:string
                2:string
                3:string
                4:XMLList
        )
    Ect.....
)

我将此数组集合用作数据提供程序,并使用项目渲染器的自定义模块。

如何从模块中访问数组值?到目前为止,我已经得到了以下内容:

<mx:List id="directorsPrepList" dataProvider="{projectsAC}" itemRenderer="modules.project" />

这是我的项目模块看起来正确的(仅用于测试目的)

<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:Scheduler="modules.*" layout="absolute" creationComplete="init();">
    <mx:Script>
        <![CDATA[
            import mx.controls.Alert;

            [Bindable] public var allData:Array = data as Array;

            private function init():void
            {
                Alert.show(String(allData[0]));
            }
        ]]>
    </mx:Script>
</mx:Module>

程序在初始化期间停止...看错了什么?

1 个答案:

答案 0 :(得分:1)

  

如何将值从dataprovider传输到itemRenderer?

列表类自动执行此操作。每个itemRenderer都有一个data属性。并且您的dataProvider对象被设置为该数据属性的一部分。

看起来,给定dataProvider,您将渲染器的每个人都传递给一个数组。如果是这种情况,则必须创建自己的渲染器。看起来你已经完成了(modules.project),但你没有向我们展示代码。

要使itemRenderer在数据更新时自行更新,您必须覆盖set data方法或监听dataChange事件。