关于[Bindable] 收藏
对一个类声明绑定,相当于给这个类里的所有属性都声明了绑定。等同于你把这个类里的所有属性都声明绑定。
那么这个类的属性如果发生了变化,则会触发绑定。
比如
[Bindable]
public ClassA{
//这里用static是为了调用方便,非static是一样的
public static var da
}
如果在外面引用,比如<mx:Label text="{ClassA.da
当da
但是有个细节要注意到,绑定之所以会被触发,是因为被绑定的对象的引用变化了,如果引用没有改变则不会触发绑定。详细举例来说明
刚才说到。ClassA.da
ClassA.da
因为,da
如果我们在定义da
如果这个da
public static var da
如果我们在组件中这样引用
<datagrid dataprovider="{ClassA.da
当我们在代码中这样改变da
ClassA.da
结果是:没有发生改变?为什么呢?
刚刚说到了,绑定是检测声明了绑定对象(或属性)的引用是否改变,实际上,我们声明只到达da
这点,即使不是对类进行绑定,直接绑定其他变量时也是相同遵守的。
因此,很多人使用bindable去绑定结果集的时候,对结果集的操作不会影响到引用的控件,
有种避免的办法就是对所有自定义类型对象都声明绑定,比如这个da
这样只要单个对象有绑定,那么就不会存在这个问题,但是这样也带来不少麻烦,定义如此多的VO,也会很繁琐。
特别是如果不是使用的ro,而是用的httpservice之类的请求,返回结果都是xml、xmllist等对象的情况下,这个办法就不是很好用了。因为必须转换到自定义的集合中去。
因此绑定也并非是万能的,某些时候还是需要手动的去处理一下。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以上来自RIACHINA
[Bindable]专门用来定义绑定中的数据源对象,
[Bindable]的用法:
1.变量前定义:使用[Bindable]后,下一行表达式定义的变量就可以被用在绑定中。
方法一:[Bindable]
方法二:[Bindable(event=”eventname”)] event事件名指当数据源发生变化时,
数据源所在对象派发的事件类型,它是可选的。如果不写,默认事件名是“propertyChange”
2.函数前定义:此函数必须通过setter和getter方式定义, [Bindable]要用在setter函数前面。
[Bindable]
public function set Num(n:Number):void{
num=n;
}
public function get Num():void{
return num;
}
虽然是方法,但使用时,也是用 . 语法,即 ~ . Num。
3. 公用类前定义:当使用了绑定标签后,这个类的所有公有变量,包括setter和getter都可以用于绑定。
package tree{
[Bindable]
public class myTest{
private var num:Number=0;
public var className:String=”aaa”; //可用数据绑定
public function set Num(n:Number):void{ //可用数据绑定
num=n;
}
public function get Num():void{
return num;
}
}
}
联系客服