首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

Flex中mx:model标签的施用

2012-10-27 
Flex中mx:model标签的运用使用mx:Model idexample/,可在Model里放置数据的结构:?mx:Model iduserD

Flex中mx:model标签的运用

使用<mx:Model id="example"/>,可在Model里放置数据的结构:

?

<mx:Model id="userData"><user><email></email><phone></phone><address><city></city><state></state></address></user></mx:Model><!--或者直接放置数据:--><mx:Model id="userData"><user><email>example@example.com</email><phone>123 555-1212</phone><address><city>Exampleville</city><state>CA</state></address></user></mx:Model><!--但一般把较多的数据这在一个文件中:--><mx:Model id="statesModel" source="states.xml" />

?

这个文件的数据是在编译时被载入,而不是运行时。它与在<Model>标签里直接嵌入数据是一样的,只不过这样更简洁。一旦编译成.swf文件之后,你就不用带上这个文件,因为数据已被编译进.swf文件。?

<mx:Model>并不是有名叫Model一个ActionScript类与它对应,实际上它是创建了一个ObjectProxy类的实例,ObjectProxy对象是一个Object实例的封装,完全可以象Object实例一样去对待它,使用ObjectProxy主要的目的是可以数据绑定。

??? 因为相当于在ActionScript中创建了一个对象,当然可以使用点语法来直接访问它的子节点对象。对象本身的ID与它的根节点是同义的。即访问其子节点对象时不用再加根对象的名字了。

??? 当一个data model结构是由两个或更多的同名兄弟节点组成是,它们将被转换成一个数组。如statesModel.state将是一个数组,存储了statesModel对象的所有名为state的子对象。?

??? 一般<mx:Model>用于传统数据,如对象,字符串和数组。而想用XML格式数据时,使用<mx:XML>标签。

<mx:XML>有一个xmlns属性来指定这个XML的命名空间。

??? 一个<mx:XML>标签,在ActionScript中默认是创建一个XML对象,此时它的format属性为缺省的e4x,如果设置为xml,将会创建一个flash.xml.XMLNode对象。

<mx:XML id="dd0" format="e4x" xmlns="dfdfdf"><name><a>ddd</a><b>bbb</b></name></mx:XML>
?

使用ActionScript类


??? 虽然使用<mx:Model><mx:XML>简单省力,但在很多情况下并不是理想的方案。它们适用于简单,静态的数据。但对于复杂的,动态的,或者带有规则的数据,使用定制的ActionScript类是更好的方法。因为:

1)使用<mx:Model>和<mx:XML>你不能强制数据的类型,但AS能。

2)不能进行数据的测试/一致性检查等,但AS类的setter方法可以测试有效的值,对无效的值可以忽略,转换或是出错。

3)不能带上商务逻辑

4)不能使用优雅的设计模式。AS类可让整个应用都可存取的实例????

??? 写一个AS类作数据模型是简单的,只需定义一个类,为所有的属性定义公共的存取方法。所有setter和getter方法都是强类型的,有些Setter方法进行数据测试检查。

?

?

热点排行