1、定义一数据类型 User.as
- package vo
- {
- //自定义数据类新
- public class User
- {
- public var username:String;
- public var password:String;
- public function User()
- {
- }
- }
- }
2、定义ModelLocater对象,用户存储应用程序中所需的数据
- package model
- {
- import mx.collections.ArrayCollection;
- public class ModelLocater
- {
- //定义ModelLocater对象
- private static var modelLocater:ModelLocater = null;
- [Bindable]
- public var acUser:ArrayCollection = new ArrayCollection();
- public static function getInstance():ModelLocater {
- if(modelLocater == null) {
- modelLocater = new ModelLocater();
- }
- return modelLocater;
- }
- }
- }
3、定义Event事件
- package event
- {
- import com.adobe.cairngorm.control.CairngormEvent;
- import vo.User;
- public class AddUserEvent extends CairngormEvent
- {
- public var user:User;
- public static const EVENAT_ADD_USER:String = "addUser";
- public function AddUserEvent(user:User)
- {
- super(AddUserEvent.EVENAT_ADD_USER);
- this.user = user;
- }
- }
- }
4、定义代理类
- package delegate
- {
- import com.adobe.cairngorm.business.Responder;
- import flashx.textLayout.tlf_internal;
- import model.ModelLocater;
- import mx.controls.Alert;
- import vo.User;
- public class AddUserDelegate
- {
- private var responser:Responder;
- private var modelLocator:ModelLocater = ModelLocater.getInstance();
- public function AddUserDelegate(response:Responder)
- {
- this.responser = response;
- }
- public function addUser(user:User):void {
- if(user.username != "") {
- modelLocator.acUser.addItem(user);
- responser.onResult(user);//放回command
- Alert.show("------delegate.addUser()-------");
- }
- else
- {
- responser.onResult(null);
- }
- }
- }
- }
5、自定义前端控制器
- package control
- {
- //前端控制器对event与command进行映射
- import com.adobe.cairngorm.control.FrontController;
- import common.AddUserCommand;
- import event.AddUserEvent;
- public class AddUserControl extends FrontController
- {
- public function AddUserControl()
- {
- addCommand(AddUserEvent.EVENAT_ADD_USER, AddUserCommand);
- }
- }
- }
6、自定义事件处理命令
- package common
- {
- import com.adobe.cairngorm.business.Responder;
- import com.adobe.cairngorm.commands.Command;
- import com.adobe.cairngorm.control.CairngormEvent;
- import delegate.AddUserDelegate;
- import event.AddUserEvent;
- import model.ModelLocater;
- import mx.controls.Alert;
- import vo.User;
- public class AddUserCommand implements Command, Responder
- {
- public function AddUserCommand()
- {
- }
- public function execute(event:CairngormEvent):void
- {
- var user:User = (event as AddUserEvent).user;
- var addUserDelegate:AddUserDelegate = new AddUserDelegate(this);
- addUserDelegate.addUser(user);
- }
- public function onResult(event:*=null):void
- {
- var user:User = event as User;
- if(user != null) {
- Alert.show("添加成功! " + user.username);
- }
- }
- public function onFault(event:*=null):void
- {
- Alert.show("添加失败!");
- }
- }
- }
8、定义ShowInfo.xmxl组件
- <?xml version="1.0" encoding="utf-8"?>
- <mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009"
- xmlns:s="library://ns.adobe.com/flex/spark"
- xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" verticalAlign="top" horizontalAlign="left">
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- </fx:Declarations>
- <fx:Script>
- <![CDATA[
- import com.adobe.cairngorm.control.CairngormEventDispatcher;
- import event.AddUserEvent;
- import mx.collections.ArrayCollection;
- import vo.User;
- [Bindable]
- public var acUser:ArrayCollection = new ArrayCollection();
- public function addUser():void {
- var user:User = new User();
- user.password = password.text;
- user.username = username.text;
- //acUser.addItem(user);
- var event:AddUserEvent = new AddUserEvent(user);
- CairngormEventDispatcher.getInstance().dispatchEvent(event);
- this.username.text = "";
- this.password.text = "";
- }
- ]]>
- </fx:Script>
- <mx:DataGrid dataProvider="{acUser}">
- <mx:columns>
- <mx:DataGridColumn dataField="username" headerText="Username" />
- <mx:DataGridColumn dataField="password" headerText="Password" />
- </mx:columns>
- </mx:DataGrid>
- <mx:Form>
- <mx:FormItem label="Username:">
- <mx:TextInput id="username" />
- </mx:FormItem>
- <mx:FormItem label="Password:">
- <mx:TextInput id="password" />
- </mx:FormItem>
- <mx:FormItem>
- <mx:Button id="login" label="Login" click="addUser();"/>
- </mx:FormItem>
- </mx:Form>
- </mx:HBox>
9、主应用程序
- <?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:con="control.*"
- xmlns:view="view.*"
- xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
- <fx:Declarations>
- <!-- 将非可视元素(例如服务、值对象)放在此处 -->
- <con:AddUserControl id="controller"/>
- </fx:Declarations>
- <fx:Script>
- <![CDATA[
- import model.ModelLocater;
- [Bindable]
- public var modelData:ModelLocater = ModelLocater.getInstance();
- ]]>
- </fx:Script>
- <mx:HBox horizontalAlign="center" verticalAlign="middle" width="100%" height="100%">
- <view:ShowInfo acUser="{modelData.acUser}"/>
- </mx:HBox>
- </s:Application>