package views { import core.IModel; import core.ISimpleView; import events.ModelChangeEvent; import events.ViewInitializedEvent; import flash.events.Event; import mx.binding.utils.ChangeWatcher; import mx.controls.TextInput; import mx.events.FlexEvent; import mx.events.PropertyChangeEvent; import mx.utils.StringUtil; [Event(name="viewInitialized", type="events.ViewInitializedEvent")] public class TextInputView extends TextInput implements ISimpleView { [Bindable] public var model:IModel; private var _member:String; public function get member() : String { return _member; } public function set member(newMember:String) : void { _member = newMember; } public override function initialize() : void { super.initialize(); ChangeWatcher.watch(this, "model", function(event:PropertyChangeEvent) : void { SimpleViewUtil.addEventListeners(event.oldValue as IModel, model, [member], changeHandler); }); addEventListener("change", function() : void { dispatchEvent(new ModelChangeEvent(ModelChangeEvent.MODEL_CHANGE, member, text)); }); SimpleViewUtil.addValidationListeners(this); } private function changeHandler(event:Event) : void { try { text = model[member]; } catch(o:Object) { text = ""; } } } }