Как использовать переменную области видимости вне таблицы внутри ItemRenderer? - PullRequest
3 голосов
/ 21 сентября 2009

Я связываю массив элементов с сеткой данных, используя ItemRenderer. Я использую переменную data для управления привязываемыми данными. У меня также есть someComponentVariable, который необходимо вставить в каждую строку, но он объявлен в области видимости компонента, поэтому сетка данных, похоже, не восстанавливает его (ошибка компиляции).

Как я могу использовать эту переменную (someComponentVariable) внутри ItemRenderer?

Пример кода

<mx:DataGrid id="userBonusesGrid" width="100" height="248" showHeaders="false" wordWrap="true">
    <mx:columns>
        <mx:DataGridColumn headerText="" width="36">
            <mx:itemRenderer>
                <mx:Component>
                    <mx:VBox verticalAlign="middle" horizontalAlign="center">
                        <ns1:SidePanelBonus 
                            bonusName="{data.name}" description="{data.description}" 
                            arrow="{someComponentVariable}">
                        </ns1:SidePanelBonus>   
                    </mx:VBox>
                </mx:Component>
            </mx:itemRenderer>
        </mx:DataGridColumn>
    </mx:columns>
</mx:DataGrid>

Ответы [ 2 ]

4 голосов
/ 21 сентября 2009

Если someComponentVariable является публичным свойством класса, включающего DataGrid, вы можете использовать outerDocument для доступа к нему из component.

<ns1:SidePanelBonus bonusName="{data.name}" description="{data.description}" 
    arrow="{outerDocument.someComponentVariable}">
</ns1:SidePanelBonus>   

См. Раздел «Использование тега компонента» в Создание встроенных средств визуализации и редактирования элементов для получения дополнительной информации о outerDocument

0 голосов
/ 21 сентября 2009

Нет, вы не можете использовать его вообще. Каждый элемент itemRenderer в сетке данных может получить доступ только к элементу, для которого был создан модуль визуализации. И это сделано нарочно, потому что itemRendrers изменяются динамически, они не привязываются к данным вечно, когда вы прокручиваете, элементы прокручиваются не средствами визуализации, они остаются в той же позиции, или они могут измениться, но данные соответствующего средства визуализации элементов всегда изменяются при прокрутке. , Они не разделяют отношения один на один.

Единственное решение - передать данные в элементе в виде отношения родитель-потомок.

...