是的,有這樣一個問題,但沒有活動,也沒有答案。使用HTTPService填充ArrayCollection
我想要從外部XML文件,使用HTTPService和相同的HTTPService的ResultEvent中加載數據,我希望他使用XML中的數據填充ArrayCollection。
我認爲ArrayCollection是這個XML的理想選擇。但我願意接受建議。
XML
<?xml version="1.0" encoding="utf-8"?>
<PhotoGalleryData>
<Photo>
<id>1</id>
<name>Summer Vacation</name>
<description>In vacation</description>
<source>vacation.JPG</source>
</Photo>
<Photo>
<id>2</id>
<name>Winter Vacation</name>
<description>coold</description>
<source>vacation2.JPG</source>
</Photo>
</PhotoGalleryData>
我認爲,在這個getDataResultHandler()
簡單的線條,就足以填充的ArrayCollection。
<mx:HTTPService id="getData"
url="{XMLDataFileLocation}"
fault="getDataFaultHandler()"
result="getDataResultHandler()"/>
[Bindable]
private var PhotoData:ArrayCollection;
private function getDataResultHandler():void
{
PhotoData = new ArrayCollection(getData.lastResult.PhotoGalleryData.photo)
}
但我想它是不是,因爲只是要確定我已經把綁定到一個ArrayCollection列表實際上看它是否真的被填充。
<mx:List dataProvider="{PhotoData}" labelField="name"/>
而且該列表沒有顯示任何數據,所以沒有按預期工作。
感謝您的任何幫助。
編輯
NOTE
The
<mx:List/>
used is just to be sure that the ArrayCollection is indeed populated, it won't be used in the App.
結果採取Bozho建議。
隨着Bozho的變化Flex不再報告var類型的錯誤,但一旦我運行它。 Adobe Flash確實報告了這一點。
TypeError: Error #1034: Type Coercion failed: cannot convert mx.utils::[email protected] to mx.collections.ArrayCollection. at PhotoGallery/getDataResultHandler()[C:\Users\Fábio Antunes\Documents\Flex Builder 3\Photo Gallery\src\ActionScripts\PhotoGallery.as:56] at PhotoGallery/__getData_result()[C:\Users\Fábio Antunes\Documents\Flex Builder 3\Photo Gallery\src\PhotoGallery.mxml:23] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.rpc.http.mxml::HTTPService/ http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C :\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\http\mxml\HTTPService.as:290] at mx.rpc::AbstractInvoker/ http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C :\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:193] at mx.rpc::Responder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:43] at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74] at DirectHTTPMessageResponder/completeHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:403] at flash.events::EventDispatcher/dispatchEventFunction()
很好,閃存報告錯誤的行23:
PhotoData = ArrayCollection(event.result);
第23行是:
result="getDataResultHandler(event)"
爲什麼它必須是一個' ArrayCollection'?在大多數情況下,您可以使用'XMLListCollection'作爲數據提供者來代替'ArrayCollection'。 – 2009-11-11 20:50:37
我會嘗試一下。 – 2009-11-11 20:59:16
Ryan,採取你的建議我該如何填充XMLListCollection與HTTPService數據? – 2009-11-11 21:03:01