1
我試圖從我的httpservice(在AS類中定義)返回我的mxml應用程序的結果。代碼本身工作正常,當我把所有的主要mxml,但我似乎無法得到它從我的AS類工作。從動作腳本中查詢httpservice類
當我在取得httpresult(myWatchedList = new XMLListCollection(myData.movie);)的行上放置一個斷點時,我可以確認myWatchedList具有所需的值。但是,當我調用getWatchedList()方法時,myWatchedList始終爲空。
我敢肯定,我在這裏的東西很明顯...
我的AS類:
package components
{
import mx.collections.XMLListCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
public class WatchList
{
[Bindable]
public var myToWatchList:XMLListCollection;
public var myWatchedList:XMLListCollection;
public function WatchList()
{
//httpservice for watched movies
var watchedList_service:HTTPService = new HTTPService();
watchedList_service.url= "http://*****/phpscripts/selectWatchedlist.php";
watchedList_service.showBusyCursor=true;
watchedList_service.resultFormat="e4x";
watchedList_service.method="POST";
//httpservice for not yet watched movies
var toWatchList_service:HTTPService = new HTTPService();
toWatchList_service.url= "http://*****/phpscripts/selectToWatchlist.php";
toWatchList_service.showBusyCursor=true;
toWatchList_service.resultFormat="e4x";
toWatchList_service.method="POST";
//listen for result
watchedList_service.addEventListener(ResultEvent.RESULT, watchedList_result);
toWatchList_service.addEventListener(ResultEvent.RESULT, toWatchList_result);
//send request to httpservice
toWatchList_service.send();
watchedList_service.send();
}
public function toWatchList_result(event:ResultEvent):void
{
//result is xml
var myData:XML = XML(event.result);
myWatchedList = new XMLListCollection(myData.movie);
}
public function watchedList_result(event:ResultEvent):void
{
var myData:XML = XML(event.result);
myToWatchList = new XMLListCollection(myData.movie);
}
public function getWatchedList():XMLListCollection {
return this.myWatchedList;
}
public function getToWatchList():XMLListCollection {
return this.myToWatchList;
}
}
}
在MXML代碼:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
xmlns:components="components.*"
initialize="doSend()">
<s:layout>
<s:VerticalLayout paddingBottom="20" paddingLeft="20"
paddingRight="20" paddingTop="20"/>
</s:layout>
<fx:Script>
<![CDATA[
import components.WatchList;
import mx.collections.XMLListCollection;
[Bindable]
private var myToWatchList:XMLListCollection;
private var myWatchedList:XMLListCollection;
private var watchList:components.WatchList;
protected function doSend():void
{
watchList= new components.WatchList();
//fetch the watchlists
myToWatchList = watchList.getToWatchList();
myWatchedList = watchList.getWatchedList();
//bind the watchlists to the tilelist
myToWatchList_tile.dataProvider = myToWatchList;
myWatchedList_tile.dataProvider = myWatchedList;
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<s:Panel id="panel" width="100%" height="100%" title="Watchlist">
<s:layout>
<s:VerticalLayout paddingBottom="5" paddingLeft="20"
paddingRight="20" paddingTop="5"/>
</s:layout>
<s:Label width="20%" fontSize="17" fontWeight="bold" text="Your watched movies"/>
<mx:TileList id="myWatchedList_tile" height="360" borderVisible="false"
columnCount="6" columnWidth="200"
itemRenderer="components.TileListItemRenderer" rowCount="1" rowHeight="360"/>
<s:Label width="20%" fontSize="17" fontWeight="bold" text="Your to watch movies"/>
<mx:TileList id="myToWatchList_tile" height="360" borderVisible="false"
columnCount="6" columnWidth="200"
itemRenderer="components.TileListItemRenderer" rowCount="1" rowHeight="360" />
</s:Panel>
Thx,這工作。我現在在watchedList_result(event:ResultEvent)中派發一個事件,並在我的mxml應用程序中監聽這個事件。 – Steven