在Flex中,所有的ActionScript类可以根据是否可视分为两类:可视化组件和不可视组件。可视化组件都从mx.core.UICmponent继承,用于完成与用户的交互;不可视组件主要用来完成一些与人机交互无关的工作,大多数与数据处理相关,比如数据校验、格式化、远程数据访问等。
如果不可视化组件实现mx.core.IMXMLObject接口,当用MXML标记定义这个类的对象时,MXML编译器能够使该对象初始化。IMXMLObject接口非常简单,只要求该接口的实现类实现一个initialized(document:Object, id:String):void方法。一旦不可视组件实现了这个接口,那么在编译时,MXML编译器在创建该不可视类实例的ActionScript语句之后添加了一条调用initialized方法的ActionScript语句,使得在运行时实现IMXMLObject接口的不可视对象在其代码中能够访问它当前所在的文档对象。
解决问题:
1.根据权限来维护UI交互组件的状态
2.工作流驱动的界面中的UI交互组件,只有当前任务环节的UI交互组件才能够工作。
实例:在Flex中定义一个这样的Action组件,这样就在通用框架与具体人机界面的UI组件之间建立起一种隔离,使得通用框架不再控制具体的UI组件(耦合性降低),而只是控制Action的属性。UI组件只需要将自身属性(enabled和visible)与Action组件相对应的属性绑定即可以。
Action代码:
package com
{
import mx.core.IMXMLObject;
[Bindable]
public class Action implements IMXMLObject
{
private var _id:String;
private var _document:Object;
public function Action()
{
}
public function initialized(document:Object, id:String):void
{
this._document = document;
this._id = id;
}
public function get id():String
{
return _id;
}
public function get document():Object
{
return _document;
}
public var operationCode:String;//对应权限中的操作码
public var caption:String; //绑定控件提供文字标签
public var visible:Boolean = true; //绑定控件提供visible属性
public var enabled:Boolean = true; //提供enabled属性
public var checked:Boolean = true; //提供checked属性
}
}
UIActions是一个专门存储Action组件的ArrayCollection派生类:
package com
{
import mx.collections.ArrayCollection;
import mx.core.IMXMLObject;
[Bindable]
public class UIActions extends ArrayCollection
{
public function UIActions(source:Array=null)
{
super(source);
}
}
}
效果图:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" minWidth="955" minHeight="600" xmlns:sample="com.*">
<!-- Place non-visual elements (e.g., services, value objects) here -->
<sample:UIActions>
<sample:Action id="action_stat" caption="统计报表" operationCode="stat" enabled="false"/>
</sample:UIActions>
<mx:Button x="123" y="124" label="发布报表" enabled="{this.action_stat.enabled}"/>
<mx:Button x="271" y="124" label="统计报表"/>
</mx:Application>
转载连接:http://blog.csdn.net/sysu_2010/article/details/6738313

- 大小: 2.6 KB
分享到:
相关推荐
`FABridge.as` 中包含关键类如 `IMXMLObject` 和 `initializeCallbacks`,这些是用来初始化和管理与 JavaScript 的连接。`ExternalInterface` 是一个关键的 ActionScript 类,用于添加回调函数,使得 JavaScript ...
2.1.3 IMXMLObject接口 2.2 客户端保持状态 2.3 客户端MVC 2.4 数据绑定 2.4.1 实现数据绑定的方法 2.4.2 数据绑定发生的时机 2.4.3 可以用于数据绑定的属性 2.4.4 数据绑定的用途 2.4.5 ...
2.1.3 IMXMLObject接口 2.2 客户端保持状态 2.3 客户端MVC 2.4 数据绑定 2.4.1 实现数据绑定的方法 2.4.2 数据绑定发生的时机 2.4.3 可以用于数据绑定的属性 2.4.4 数据绑定的用途 2.4.5 ...
2.1.3 IMXMLObject接口 25 2.2 客户端保持状态 28 2.3 客户端MVC 30 .2.4 数据绑定 34 2.4.1 实现数据绑定的方法 35 2.4.2 数据绑定发生的时机 37 2.4.3 可以用于数据绑定的属性 39 2.4.4 数据绑定的用途 40 ...
如果不可视组件实现IMXMLObject接口,它们可以用MXML标记定义并初始化。 2.2 客户端保持状态是Flex Rich Internet Application(RIA)的一个关键特性,不同于传统的无状态Web应用,Flex允许客户端保存和处理数据,...