我一直在尝试这一点,现在我无法解决它。从Flex的外部AS类调度事件的问题
我有一个主要应用程序Planner.mxml
。这个视图有几个自定义组件,其中一个是LoginView.mxml
。在LoginView.mxml
我做到以下几点:
protected function btnLoginClick(event:MouseEvent):void
{
try
{
var login:Login = new Login(txtEmail.text, txtPassword.text);
}
catch(error:Error)
{
Alert.show(error.message, "Oops!");
}
}
创建我Login
类的新实例,并发送一些参数构造函数。我的构造是这样的:
public function Login(email:String, password:String)
{
if(email == "" || password == "")
{
throw new Error("Please complete all fields.");
}
else
{
var loginRequest:HTTPService = new HTTPService();
var parameters:Object = new Object();
parameters.email = email;
parameters.password = password;
loginRequest.url = Globals.LOGIN_URL;
loginRequest.resultFormat = "object";
loginRequest.method = "POST";
loginRequest.addEventListener("result", loginHandleResult);
loginRequest.addEventListener("fault", loginHandleFault);
loginRequest.send(parameters);
}
}
我在这里检查,如果所有字段都是完整的,如果是这样,我把一个参数的构造函数的参数对象,然后我发到的HTTPService,这是一个简单的PHP文件处理请求,检查数据库并返回一些XML。 (这可能不是最好的方式,但在这一点上它确实不是太重要)。
如果用户成功登录,则xml将包含一个设置为true
的状态属性。我在HTTP服务的结果事件处理程序中检查了这一点。这是一切都出错的地方。你可以看到,当用户成功登录时,我想分派一个自定义事件;如果没有,我会显示一个警告框。但是,这个事件并没有派遣(或者至少,我不知道如何去听)。
我想在我的主应用程序中侦听它,然后我可以将viewstate更改为登录状态。然而,事件似乎从来没有达到过。我通过在我的loginComponent上有loggedIn="loggedInHandler(event)"
来收听。
任何想法如何做到这一点?提前致谢。我真的很感激任何帮助。