|
对象工厂和对象配置
在Config.mxml中,你能看到应用中用到的从域模型到代理的所有对象。声明这些对象的方式有两种:
标准的MXML
使用Parsley的对象定义标签
在后面的内容中,我将详细介绍这种方法。
设置控制器和LoginHandler
我在这里不再使用自己编写的控制器,转而使用Parsley的消息系统(其设计决定了它对你编写的对象的影响很小)。具体是用元数据来实现。Parsley将事件源绑定到事件处理器,需要一个在上下文可见且具有元数据的对象。
在这个例子应用中,LoginPM是事件源,LoginAction(从LoginHandler重命名而来)是事件处理器。
如下代码摘自LoginPM:
[Event( name="LOGIN", type="com.adobe.login.control.event.LoginEvent")]
[ManagedEvents("LOGIN")]
public class LoginPM extends EventDispatcher
{
...
public function login() : void
{
var event : LoginEvent = new LoginEvent( username, password );
dispatchEvent( event );
}
}
让LoginPM成为事件源需要三个要素:Event元数据标签、ManagedEvents元数据标签,以及EventDispatcher#dispatchEvent。三者当中,只有ManagedEvents是Parsley扩展而来。Event元数据仅为习惯做法,事件的实际派发工作是由dispatchEvent完成的。Parsley将通过ManagedEvents决定它要处理哪个事件,并将该事件委托给事件处理器。
如下代码摘自LoginAction(已经被配置为事件处理器):
public class LoginAction implements IResponder
{
[MessageHandler]
public function execute( event : LoginEvent ) : void
{
...
}
}
因为我为这个函数补充了MessageHandler元数据,Parsley将把这个对象/函数当做类型为LoginEvent的所有事件的监听器。
要让这些对象对Parsley可见,可在传入FlexContextBuilder的配置文件内声明这些对象,或在视图中使用Configure对象。 |
|