Bindable]标签用来声明属性是可以绑定的。
1,在类前写[Bindable]声明所有的public属性,var 声明的或者getter/setter是可以绑定的
[Bindable]
class AllBindable{
public var variable;
public function set accessor(v:Object):void{
......
}
public function get accessor():Object{
......
}
//No you are NOT public
protected var protectedProperty;
//No you are NOT public
private var privateProperty;
}
上边的类中variable和accessor是可以绑定的,protectedProperty和privateProperty还不是。
2,在公有的实例变量或者类变量前写[Bindable],声明它是可以绑定的。这里的“变量”特指使用 var 声明的。
[Bindable]
public var variable;
3,getter/setter。单独的getter定义一个只读的属性,只读的属性不必被声明为可绑定的,帮助文档的解释是他们通常是不变的所以可以当作他们已经被声明为bindable一样的来使用(可是我觉得只读和不变还是有区别的)。单独的setter定义一个只写的属性,只写属性不能被绑定,这个容易理解,因为 : <...source="{??? unreadable --b}" .../>
一组getter/setter定义一个读写的属性。使用[Bindable]声明的属性是getter/setter定义的这种情况,应该把标签写到这组定义的前面。
//[Bindable] 一个正确的位置,虽然标签对私有的变量不起作用,但是为了防止记忆上的疲劳,[url=javascript:;]推荐[/url]写到下边
private var _property
[Bindable] //这是编辑器推荐的位置,紧挨着getter/setter,我要附和一下
//
protected function set property(v:Object):void{
_property = v;
}
protected function get property():Object{
return _property;
}