Flex: Help me understand data Binding on getters and setters -
help me understand data binding
when create variable in class:
[bindable] private var _name:string;
, generate getters , setters, get:
private var _name:string; [bindable] public function name():string { return _name; } public function set name(value:string):void { _name = value; } why generate tag '[bindable]' on function?
me, seem should on set function, want know when value changes, not when value read.
what might understand going on here code mxml compiler generate when make [bindable]. mxml compiler wraps [bindable] property in it's own getter/setter. wrapper setter method can dispatch "propertychange" event when new value set. event notifies parties binding property value has changed.
getters/setters in actionscript considered properties of object (they not methods of object). doesn't matter whether annotate getter or setter [bindable], generated code right thing.
it's worth noting can avoid generated code , optimize situation dispatching own event when property changes. this, [bindable] metadata tag needs include event name dispatched when property changes:
private var _name:string; [bindable("namechanged")] public function name():string { return _name; } public function set name(value:string) { if (_name == value) return; _name = value; dispatchevent(new event("namechanged")); } because bindable metadata contains event string, no code generated. note, compiler won't warn if forget dispatch event setter. in fact, can dispatch custom binding event anywhere in class (this can useful functions bindable).
Comments
Post a Comment