Flex: использование списка в качестве ретранслятора ... как передать информацию от поставщика данных вызываемому пользовательскому модулю? - PullRequest
1 голос
/ 28 июля 2011

При использовании компонента List вместо Repeater, как передать значение из провайдера данных в 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 Ответ

1 голос
/ 28 июля 2011

как передать значение из провайдера данных в itemRenderer?

Класс списка делает это автоматически.Каждый itemRenderer имеет свойство данных.И объект вашего dataProvider устанавливается как часть этого свойства данных.

Похоже, что, учитывая ваш dataProvider, вы передаете каждому отдельному представителю массив.Если это так, вам придется создать свой собственный рендерер.Похоже, что вы сделали это (modules.project), но вы не показали нам код.

Чтобы заставить itemRenderer обновляться самостоятельно при каждом обновлении данных, вам придется либо переопределить наборметод данных или прослушивание события dataChange.

...