flex中Carigorm框架.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
flex中Carigorm框架

1、Carigorm框架的流程:客户端页面有view组成,view使用flex的[bind]标签来显示ModelLocator。View根据诸如鼠标点击,按下按钮以及拖拽之类的用户动作,产生Event事件。这些事件被FrontCotroller广播并监听。FrontController会将Event事件映射到对应的Command。Command包括业务逻辑,创建所需的Delegate,处理Delegate的响应,以及更新存储在ModelLocator中的数据。由于View是绑定到ModelLocator中的数据上的,所以当ModelLocator中的数据改变的时候View也会自动更新。Delegate调用Service并且将结果提交给Command,这一步是可选的,但是推荐这么做。Service调用远程数据然后将结果提交给Delegate。 Delegate的最简单的形式就是一个中间人的角色。如果一个Command需要调用webservice来获得一些数据,它将创建一个Delegate来完成这个调用。一个Command创建一个Delegate,Delegate调用一个指定的dataService,Service返回结果给Delegate,Delegate返回结果给Command。 Delegate并不是100%必需的,但是当涉及测试程序环境的时候它们很有帮助。相对于在Command代码中使用查找替换改变所有的引用来测试,将一个Delegate重映射到一个测试Service更为简单。 2、Carigorm框架的各个部分组成: ModelLocator:在一个地方存储程序中所有的值对象(ValueObjects,数据)并共享变量。它与HTTP Session对象相类似,不过它存储在Flex客户端,而不是存储在一个中间层程序服务器的服务器端。 View(视图):一个或多个Flex组件(Button,panel,combo Box,Tile等等)绑定到一起形成的一个特定的个体,使用ModelLocator中的数据并且针对用户的交互动作(如点击,鼠标滑过,拖拽等)产生自定义的CairngormEvents。 FrontController(前端控制器):接受CairngormEvents并且将它们映射到CairngormCommands。 Command(命令):处理业务逻辑,调用CairngormDelegates或其他的Commands,以及更新ModelLocator中存储的值对象和变量。 Delegate(委托):由一个Command创建,它将远程过程实例化并且将结果返回给Command。 Service(服务):定义链接到远程数据库的远程过程调用(HTTP,Web Services等)。 3、下面就一个实例来说明: 刚进入这个页面需要加载数据:那么在页面panel(自定义组件)标签中添加一个属性,并在AS代码中添加这个方法: mx:Panel xmlns:mx=/2006/mxml layout=absolute width=478 height=506 title=Employees creationComplete=LoadPersons(); public function LoadPersons():void { } 由于,不需要传递什么参数,所以在event包中:定义一个LoadPersonsEvent事件并继承CarirngromEvent事件,并为此事件起一个事件ID package event { import com.adobe.cairngorm.control.CairngormEvent; public class LoadPersonsEvent extends CairngormEvent { //event name public static var EVENT_ID:String = LoadPersons; public function LoadPersonsEvent() { super(EVENT_ID); } } } 再返回自定义组件上,在Panel中,在as代码的LoadPersons方法中建立一个LoadPersonsEvent事件,并分发,后会在Control包中进行监听。(所以Carirngorm框架不需要自己手动的进行监听事件) public function LoadPersons():void { var e:LoadPersonsEvent = new LoadPersonsEvent(); e.dispatch(); } 由于页面的列表组件要和数据进行绑定,因

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档