浏览 6085 次
锁定老帖子 主题:Flex学习笔记_09 数据绑定_晋级篇
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-07-28
9.2.1 函数和类级别的绑定 [Bindable]标签打使用:
[Bindable]
public function set Num(n:Number):void{...} public function get Num():void{...}
9.2.2 使用ActionScript 来定义绑定 BindingUtils 位于mx.binding.utils 包中:
site:Object, 表示目标对象
prop:String, 目标对象的公有属性名,当值发生变化时,派发绑定事件 host:Object, 数据源对象 chain:Object, 数据源对象被绑定的属性名,或通过getter定义的函数名 commitOnly:Boolean=false 默认false,表示要发生值的到改变时就会引发绑定行为。true:表示对对象有写操作时仍然会派发事件,但不会激发绑定行为,只有确认了改变的数据, 并派发事件valueCommit 后,绑定动作才开始执行。 )
setter:Function, 函数,用来改变数据源对象的值,可以直接在代码中声明一个函数体
host:Object, 数据源对象 chain:Object, 数据源对象被绑定的属性名,或通过getter定义的函数名 CommitOnly:Boolean=false 默认false。同上。 ) ChangeWatcher 对象 位于mx.binding.utils 包中,侦听绑定的动作:
var cw:ChangeWatcher = ChangeWatcher.watch(tip_txt, "text", handler); cw.unwatch(); //停止监听 watch( host:Object, 数据源对象 chain:Object, 数据源对象被绑定的属性名,或通过get定义的函数 handler:Function, 监听函数 commitOnly:Boolean=false 默认false,表示只要发生值的改变时就会引发绑定行为,同上 )
在绑定中出现问题,一般有以下情况:
Object 类型作为所有类型的父类,它不完全支持数据绑定。 Object 类型属于动态类型,可以随意的向里面添加任何属性,而且属性的类型也是任意的。 如果要对Object类型绑定,必须使用 mx.utils 包中的 ObjectProxy 对象: [Bindable] internal var info:Object; internal var function ininApp():void{ //定义info 的属性值 info = new ObjectProxy(); info.label = "label"; BindingUtils.bindProperty(tip_txt, "text", info, "label"); //设置绑定 } Proxy 是代理的意思,ObjectProxy 就相当于 Object 的代理人,提供了数据绑定的接口,任何属性发生变化时,都会派发事件。 ArrayCollection 是增强性的 Array,依然是用数组来存储数据,但支持多种排序、属性绑定等,适合用来处理复杂数据。 setItemAt(item:Object, index:int); //将元素插入到数组指定的位置,如果存在则替换 数组类型的对象,其子元素是无法作为数据源绑定的。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |