我有这个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()
我做错了什么?
答案 0 :(得分:0)
您无需创建DataProvider实例。您应该能够使用XML实例直接分配dataProvider属性。 dataProvider setter将自动确定对象类型并对其进行适当处理。
答案 1 :(得分:0)
您必须为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;
}