我正在使用動態命令的parsley框架中開發一個應用程序。找出在Parsley動態命令中發送請求的消息類型
下面是示例代碼
public class MyCommand extends EventDispatcher
{
[Inject]
public var service:IService;
[Inject(id="model")]
public var model:TestModel;
public function execute(message:TestMessage):AsyncToken
{
return service.getResponse(message.requestObject);
}
public function result(data:Object):void
{
//Here i want to find out the response is for message type1 or message type2, that called the service.
var result:ByteArray=data as ByteArray;
var response:ArrayCollection=result.readObject() as ArrayCollection;
model.data=response;
}
//faultCode, faultDetail, faultString, rootCause
public function error(info:Object):void
{
dispatchEvent(new AlertEvent(AlertEvent.SHOW_ALERT,"Service Loading Error",
"There was an error in the application"));
}
}
郵件類
public class TestMessage
{
public static const Type1:int=0;
public static const Type2:int=1;
private var _type:int;
private var _requestObject:RequestObjectHelper;
[Selector]
public function get type():int
{
return _type;
}
public function set requestObject(value:RequestObjectHelper):void
{
_requestObject = value;
}
public function get requestObject():RequestObjectHelper
{
return _requestObject;
}
public function TestMessage(type:int)
{
_type=type;
}
}
RequestObject類
public class RequestObjectHelper
{
private var _url:String;
private var _resultFormat:String;
private var _noCacheParam:Object;
//getters and setters
}
消息調度代碼
public function handleViewInitialized():void
{
var requestObject:RequestObjectHelper;
var message:TestMessage;
//msg1
requestObject=new RequestObjectHelper();
requestObject.url="url1";
requestObject.resultFormat="amf";
message=new TestMessage(TestMessage.Type1);
message.requestObject=requestObject;
dispatcher(message);
//msg2
requestObject=new RequestObjectHelper();
requestObject.url="url2";
requestObject.resultFormat="amf";
message=new TestMessage(TestMessage.Type2);
message.requestObject=requestObject;
dispatcher(message);
}
我希望上面的代碼很容易理解。我儘量保持簡單。 我想從這段代碼中得到什麼如何從服務響應到達時MyCommand類的result方法中調用服務的結果方法來識別哪種類型的消息。
這看起來並不正確(作爲一個RobotLegs用戶)。如果Parsely與RL類似,Command的部分就是execute()方法。所有其他的東西不會從執行中調用(你沒有調用它),任何調用命令作爲命令的東西都不會/不應該知道它。 – 2013-03-12 14:39:39
@AmyBlankenship:正如你所說的命令不應該知道什麼叫它,這是parsley命令的確切情況。我最終得到的是同一個模型的兩個單獨的命令。你能告訴我爲什麼命令不應該知道什麼叫它? – ankurtr 2013-03-13 03:29:51
這不是我說的。我說調用execute()方法的東西不會知道其他方法的任何內容,因爲如果它正確連接,框架只知道界面中定義了什麼。但是你說得對,命令應該只知道注入的內容。我也不希望Parsley有任何使用或知道execute()返回的設施。這不是命令的工作方式/他們的用途。 – 2013-03-13 12:48:41