Ошибка ArrayCollection во Flex не принимает отдельные узлы XML - альтернативы? - PullRequest
2 голосов
/ 29 апреля 2010

Я получаю эту ошибку, когда извлекаю XML, который имеет только 1 узел (без повторяющихся узлов), и пытаюсь сохранить его в ArrayCollection. -Если у меня более 1 «именных» узлов ... я НЕ получаю сообщение об ошибке.

TypeError: Error #1034: Type Coercion failed: cannot convert "XXXXXX" to mx.collections.ArrayCollection.

эта ошибка возникает в виде строки кода:

myList= e.result.list.name;

Почему ArrayCollection не может работать с одним узлом? Я использую эту коллекцию ArrayCollection в качестве поставщика данных для Компонента - есть ли альтернатива, которую я могу использовать, которая будет принимать ОБОИХ единичных и повторяющихся узлов, а также работать в качестве поставщика данных? Заранее спасибо!

код:

[Bindable]
private var myList:ArrayCollection= new ArrayCollection();

        private function getList(e:Event):void{

            var getStudyLoungesService:HTTPService = new HTTPService();
            getStuffService.url = "website.com/asdf.php";
            getStuffService.addEventListener(ResultEvent.RESULT, onGetList);
            getStuffService.send();

        }

        private function onGetList(e:ResultEvent):void{

            myList= e.result.list.name;
        }

Ответы [ 2 ]

1 голос
/ 27 апреля 2011

resultFormat должно быть установлено на e4x:

var getStudyLoungesService:HTTPService = new HTTPService();
getStuffService.url = "website.com/asdf.php";
getStuffService.resultFormat = "e4x";
getStuffService.addEventListener(ResultEvent.RESULT, onGetList);
getStuffService.send();

Затем вы можете получить результаты следующим образом:

new XMLListCollection(e.result.list.name);

(Все кредиты Амаргошу, я часами бился об этом, но чуть не пропустил его комментарий!)

0 голосов
/ 29 апреля 2010

Вы не можете напрямую присвоить XML или даже XMLList переменной типа ArrayCollection. Используйте XMLListCollection и передайте данные его конструктору.

[Bindable]
private var myList:XMLListCollection;

myList = new XMLListCollection(e.result.list.name);
...