Bindable数据绑定
?
?使用数据绑定时,Flex 会自动把一个对象的数据复制,提供给另一个对象使用,提供数据一方称为数据源对象,使用数据的一方称为目标对象。当数据源对象的数据发生变化时,目标对象的数据会自动更新。 实质上,绑定的实现也是借助事件机制来完成的,当目标使用了数据绑定,目标对象就会侦听数据源的某一个固定事件。如果数据源改变,就派发事件,通知目标对象更新最新数据。当然这个过程都是由Flex来完成。作为绑定的数据源对象,必须支持绑定--对象有派发改变事件的能力。
?
Data BindIng 什么时候发生:
??
1.在绑定源属性值发生改变时发生。
? 2.在绑定源发出
initialize事件时绑定发生一次
。
函数: scaleX="{doResize(scale)}" 4) AS类: mx.binding.utils.BindingUtils 动态绑定 有时你的视图组件是动态生成的,有时你需要动态的改变绑定,有时你使用Sprite动态生成的图形也需要绑定数据,或者你就是喜欢完全使用AS来写。 比如: ?private?function?init():void?{?????????????????????????????????????? for?(var?i?:?int?=?0;?i?<?3;?i++)?{??????????????????????? var?nameLabel?:?Labelnew?Label();?????????????????????? ?var?emailLabel?:????????????????????????myBox.addChild(nameLabel);???myBox.addChild(emailLabel);???BindingUtils.bindProperty(nameLabel,?"text",?userVO,?"name");??????????????????????? BindingUtils.bindProperty(emailLabel,?"email");??????????????????? }??????????????? }??? 使用这种方法,可以将多个视图组件与一个Value Object对象(或叫DTO、Bean等)进行绑定,当VO对象改变时,所有绑定的视图都会改变。也可以在纯as文件中实现动态绑定了。 3>>可以对变量,类,getter 和setter 进行绑定 用在只读,只写属性(getter/setter)上面,因为getter和setter很像方法,用起来会有点不同。看看这个例子:
????? this.dispatchEvent(newEvent("_contectChanged"));?? 这样就避免了编译器去自动识别。自己加上绑定关系,当_content被赋值,发出_contentChanged事件,通知所有被绑定的getter方法执行一遍。这也说明了,绑定不过是事件游戏而已,flex为用户隐藏了很多底层算法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |