2007年10月26日

Cairngorm框架的裁剪

1 概述

1.1 Cairngorm比较适合大型的, 复杂的应用, 对于小型, 简单的应用过于庞大繁琐, 降低了开发效率

1.1 通过ServiceLocator + Biz Delegate屏蔽了服务端实现

1.2 简单应用和复杂应用可以共享一个 ServiceLocator + Biz Delegate

 

2 简单应用

2.1 ServiceLocator + Biz Delegate

2.1.1 View层里直接实例化一个Biz Delegate调用其方法.

2.1.2 实例化Biz Delegate时要创建一个Responder对象, 用于处理Biz Delegate返回的结果或异常

 

3 复杂应用

3.1 ServiceLocator + Biz Delegate + MVC

3.1.1 View通过事件通知在Control里注册的Command, Command调用Biz Delegate, 并处理Biz Delegate返回的结果或异常.

3.1.2 处理结果通常意味着改变Model, 由于Model被绑定到View上, Model发生改变时, View也随之改变

 

4 区分简单和复杂的标准

4.1 待定

posted @ 2007-10-26 17:29 cofd 阅读(112) 评论(0) 编辑

Flex和JavaScript互操作

Flex提供相关对象可以灵活地和当前网页的JavaScript相互进行灵活的调用。那就是说可以通过JavaScript调用Flex内部的方法,同样在Flex时也可以直接调用页面上相关的JavaScript方法。

ExternalInterface对象用于和JavaScript进行互操作。该对象分别提供了addCallBack和Cell方法:

  • addCallBack方法

用于注册一个内部方法用于给JavaScript调用。

private function flashFunction(str:String):String

{

    return str + " i am a flash result";

}

实际上JavaScript是不能直接调用Flex的内部方法的,那如何使JavaScript能够调用呢?

首先通过ExternalInterface.addCallback("callFlash", flashFunction);的方法进行注册,可以把方法放在Applicaion.Initialize的事件中。

方法第一个参数是:外部调用名称就是JavaScript调用的方法名称。

方法第二个参数是:代理执行Flex的内部函数。

JavaScript通过以下方式调用:

<input type="button" value="call flash function" onclick="alert(document.all('jsInterop').callFlash('i am a js argument. '));" />

  • Call方法

用于调用当前页面里的JavaScript方法.

function jsFunction(arg)

{

    return arg + " i am a js result";

}

在Flex里可以通过以下方式调用jsFunction ()方法。

private function onClick():void

{

    var msg:String = ExternalInterface.call("jsFunction", "i am a flash argument. ");

    Alert.show(msg);

}

Flex在和JavaScript整合这方面做得非常好,你并不需要花费太多的工作就能够实现和页面数据元素进行数据交换;同样也可以调用已经有的Ajax功能。

posted @ 2007-10-26 16:29 cofd 阅读(644) 评论(0) 编辑