FLEX使用Model标签与定制as类
发布时间:2020-12-15 05:04:24 所属栏目:百科 来源:网络整理
导读:使用mx:Model id="example"/ 可在Model里放置数据的结构: mx:Model id="userData"? ???????? user? ???????????? email/email? ???????????? phone/phone? ???????????? address? ???????????????? city/city? ???????????????? state/state? ????????????
使用<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对象。 使用ActionScript类 虽然使用<mx:Model><mx:XML>简单省力,但在很多情况下并不是理想的方案。它们适用于简单,静态的数据。但对于复杂的,动态的,或者带有规则的数据,使用定制的ActionScript类是更好的方法。因为:
1)使用<mx:Model>和<mx:XML>你不能强制数据的类型,但AS能。 2)不能进行数据的测试/一致性检查等,但AS类的setter方法可以测试有效的值,对无效的值可以忽略,转换或是出错。 3)不能带上商务逻辑 4)不能使用优雅的设计模式。AS类可让整个应用都可存取的实例??? 写一个AS类作数据模型是简单的,只需定义一个类,为所有的属性定义公共的存取方法。所有setter和getter方法都是强类型的,有些Setter方法进行数据测试检查。
在包中定义类之后: package com.oreilly.programmingflex.data {? public class User{ } } 就可以在MXML中创建它的实例了,但得首先将包声明为命名空间: ???? <?xml version="1.0" encoding="utf-8"?>?
???? <mx:Application xmlns:mx="? http://www.adobe.com/2006/mxml? " xmlns:data="com.oreilly.programmingflex.data.*" layout="absolute"> ???????? <data:User id="user" email="?
example@example.com?
" lastLogin="{new Date()}"?
??????????????????? nameFirst="Abigail" nameLast="Smith" userType="1" /> ???? </mx:Application>
若在AS中使用,你需要导入这个类,然后使用它: ???? import com.oreilly.programmingflex.data.User;? ???? private var user:User; ???? private function initializeHandler(event:Event):void {?
???????? user = new User();? ???????? user.email = "? ";? ???????? // etc.? ????? } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- ORACLE查看并修改最大连接数的具体步骤
- 正则表达式 – WordPress add_rewrite_rule在本地
- ruby-on-rails – Bundler.require对我的gem中的
- c# – 为什么CastleWindsor的BeginScope超出范围
- c – Xcode无法构建虚幻引擎4项目
- cocos2dx中.json和.plist以及.xml文件格式生成加
- Aerospike-Architecture系列之系统概述(System
- ruby-on-rails – 无法连接到chromedriver
- c# – 如何在标记中“绑定”标签的Text属性
- objective-c – Facebook,Twitter图标在iOS7上未
热点阅读