Почему эта программа ActionScript не работает? - PullRequest
0 голосов
/ 27 сентября 2011

Показывает ошибку:

1120: Access of undefined property myArray. DataGrid.mxml /DataGrid/src line 10

Исходный код:

 <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" minWidth="955" minHeight="600">
    <mx:Script>
        <![CDATA[

            import mx.collections.ArrayCollection;

            [Bindable]
            public var myArray:Array = new Array();
            myArray[0] = "Tom"; // string

            [Bindable]
            public var arrColl:ArrayCollection = new ArrayCollection(myArray);

        ]]>
    </mx:Script>

    <mx:AdvancedDataGrid id="ad"
                         columns="{myArray}"
                         dataProvider="{arrColl}"/>
</mx:Application>

В чем проблема?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2011

Вы не можете начать присваивать значения массиву в определении класса. Вам нужно переместить myArray[0] = "Tom"; строку внутри метода. Если вы хотите, чтобы это произошло при инициализации, укажите обработчик события в теге приложения creationComplete="yourEventHandler" и поместите строку в yourEventHandler(). Надеюсь, это поможет, дайте мне знать, если вам нужно больше кода:)

0 голосов
/ 27 сентября 2011

Вы не должны писать произвольный код непосредственно в блоке сценария, если вы точно не знаете, что делаете.Скорее вы должны сделать что-то вроде этого:

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
                initialize="initialize()">
  <mx:Script>
    <![CDATA[
      import mx.collections.ArrayCollection;

      [Bindable]
      public var myArray:Array = new Array();

      [Bindable]
      public var arrColl:ArrayCollection;

      private function initialize() : void
      {
        myArray[0] = "Tom";
        arrColl = new ArrayCollection(myArray)
      }
    ]]>
  </mx:Script>
  <mx:AdvancedDataGrid columns="{myArray}" dataProvider="{arrColl}"/>
</mx:Application>

Другая проблема с этим кодом заключается в том, что myArray[0] = "Tom" не приведет к обновлению сетки данных.Для этого вам необходимо присвоить самой переменной myArray (например, myArray = ["Tom"]).

...