Можнобыть объявленным снаружи и внутри itemrenderer? - PullRequest
1 голос
/ 01 сентября 2011

Я объявляю переменную вне itemRenderer fx: тело скрипта.Однако, когда я устанавливаю его так в моем itemRenderer:

test_Var = data. @ Field_value;

Выдает ошибку «Доступ к неопределенному свойству test_Var»

МожетУ меня есть 2 тела, одно внутри предметного торговца и обычное снаружи?

    public var test_Var:Number = new Number();
    public function useVariableValue():void{
   // I will use the variable value in this function..
}
        ]]>
                                    </fx:Script>




    <mx:DataGrid id="myDG" rowCount="8" creationComplete="myDG_creationCompleteHandler(event)" resizableColumns="false" height="234">
                <mx:columns>
                    <mx:DataGridColumn headerRenderer="renderers.datagridHeaderRenderer" dataField="@field_label" headerText="Header1" width="130" />
                    <mx:DataGridColumn dataField="@field_value" headerText="Header2" itemRenderer="renderers.labelItemRenderer1" />
                    <mx:DataGridColumn headerText="Header3">
                        <mx:itemRenderer>
                            <fx:Component>
                                <mx:Canvas dataChange="canvas1_dataChangeHandler(event)">
                                    <s:Button horizontalCenter="1" id="button" click="onClick(event)" label="View"/>
                                    <fx:Script>
                                        <![CDATA[
                                            import mx.controls.Alert;
                                            import mx.events.FlexEvent;

                                            protected function canvas1_dataChangeHandler(event:FlexEvent):void
                                            {
                                                if(data.@field_visibility == "true"){
                                                    this.button.visible = true;
                                                }
                                                else{
                                                    this.button.visible = false;
                                                }
                                            }

                                            private function onClick(evt:Event):void
                                            {
                                                test_Var = data.@field_value;
                                            }
                                        ]]>
                                    </fx:Script>
                                </mx:Canvas>
                            </fx:Component>
                        </mx:itemRenderer>
                    </mx:DataGridColumn>
                </mx:columns>
            </mx:DataGrid>*

1 Ответ

3 голосов
/ 01 сентября 2011

fx: Компонент определяет совершенно новую область видимости. Вы можете получить доступ только к свойствам в своей начальной области, используя ключевое слово externalDocument.

В вашем случае измените его на:

private function onClick(evt:Event):void
{
    outerDocument.test_Var = data.@field_value;
}

Для получения дополнительной информации читайте (см. Раздел на ExternalDocument):

http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html

...