Flex 3 数据绑定
一、数据绑定概念
- 数据绑定:当数据源对象的数据发生变化时,目标对象的数据会自动更新,而不需要我们再编写代码去强制更新
- 绑定实际也是借助事件机制来完成的,当目标使用了数据绑定的时候,目标对象就会监听数据源对象的某一固定事件。当数据源发生变化时,数据源会派发改变事件(ChangeEvent),通知目标对象更新数据。这个过程由Flex完成,不用我们手动干预。
- 绑定的前提条件:源对象的数据和目标对象的数据格式相同。
二、方法
- 1.在对象的属性标签中,使用{ }把数据源直接绑定到对象的某个属性上。
- 2.在对象的属性标签中,使用{ }把某个函数的返回值作为数据源绑定到对象属性上。
函数的参数要使用[Bindable]绑定符号
n [Bindable]
[Bindable(event=“eventname”)]
Event表示当数据源发生变化时,数据源所在对象派发的事件类型,它是可选项,默认的事件名是“propertyChange”,一般情况下只需要使用[Bindable]标签
- 3.使用<mx:Binding>标签
source=“…” destination=“…”
参考例子BindDemo1
三、数据内容的标签<mx:Model>标签
<mx:Model id=“books”>
<books>
<book>
<name>FLEX教程</name>
<author>张三</name>
</book>
<book>
<name>JAVA高级编程</name>
<author>李四</name>
</book>
</books>
</mx:Model>
四、Object对象是一个动态对象
var o:Object=new Object();
o.name=“Jack”;
o.age=20;
o.address=“北京海淀100号”;
- Model中的节点数据默认是Object类型,作数据源必须转换成ObjectProxy类型。
此处是运用了<mx:Binding source 。。。。内部会转换的
五、数据绑定说明
- [Bindable]标签用于函数时,只能在setter和getter方式定义的函数前使用。称为函数级别绑定。
- [Bindable]标签用于公有类时,这个类的所有公有变量、 setter和getter方式定义的函数都可以用于绑定。成为对象级别绑定。
BindingUtils和动态绑定
- Mx.binding.utils
- BindingUtils提供了两个静态方法处理动态绑定
- bindProperty(site:Object,prop:String,host:Object,chain:Object,commitOnly:Boolean=false)
- bindSetter(setter:Function,host:Object,chain:Object,commitOnly:Boolean=false)
综合例子参考例子BindDemo1中的binddemo4.mxml