Как создать DataProvider с использованием определенных элементов из объекта XML во Flash AS3 - PullRequest
0 голосов
/ 01 октября 2010

У меня есть этот XML (Flash / AS3):

 <channel>
 <title>...</title>
 <description>...</description>
 <item><summary>...</summary><detail>...</detail></item>
 <item><summary>...</summary><detail>...</detail></item>
 ...
 </channel>

Я хочу создать DataProvider, содержащий элементы (для использования в сетке данных).

Я думал, что это будет работать:

var items:XML = new XML(evt.target.data); //url loader event listener 'complete'
trace(items..item is XMLList); // true
myDP = new DataProvider(items..item);

Но я получаю эту ошибку:

 TypeError: Error: Type Coercion failed: cannot convert 
   <item><summary>...</summary><detail>...</detail></item>
   <item><summary>...</summary><detail>...</detail></item>
     ...
 to Array or DataProvider.
    at fl.data::DataProvider/getDataFromObject()
    at fl.data::DataProvider()

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 01 октября 2010

Вы должны предоставить DataProvider XML, а не XMLList:

var items:XML = <channel>
   <title>Title</title>
   <description>Description</description>
   <item><summary>Summary 1</summary><detail>Detail 1</detail></item>
   <item><summary>Summary 2</summary><detail>Detail 2</detail></item>
</channel>;

var xml:XML = <dummy/>;
xml.appendChild(items..item);
list.dataProvider = new DataProvider(xml);
list.labelFunction = function(item:Object) {
   return item.summary;
}
0 голосов
/ 01 октября 2010

Вам не нужно создавать экземпляр DataProvider. Вы должны иметь возможность напрямую назначать свойство dataProvider вместе с экземпляром XML. Установщик dataProvider автоматически определит тип объекта и обработает его соответствующим образом.

...