         this.rebindModel( @view, @view.model )
 
     onFieldChange: (ev)->
-        el = Lanes.$(ev.target);
-        name = el.attr('name');
-        m = @view.model;
-        return unless m.hasAttribute(name)
+        el = Lanes.$(ev.target)
+        name = el.attr('name')
+        return unless @view.model?.hasAttribute(name)
         val = el.val()
-        el[0]._is_setting=true; m.set( name, val ); delete el[0]._is_setting
-        msg = m.checkValid(name,val)
+        unless false == this.view.trigger("update:#{val}", val)
+            el[0].binding_is_setting=true; @view.model.setFromView(name, val); delete el[0].binding_is_setting
+        msg = @view.model.checkValid(name,val)
         this.setError( el, msg )
+        return true
 
     onAttributeUpdate: (model, opts={})->
         attributes = if opts.all then this.attributesFor(model) else model.changedAttributes()

                this.setError(Lanes.$(el),message) if el = this.getElement(name)
        for name, _val of attributes
            el = this.getElement(name)
            this.setElValue(Lanes.$(el),model.get(name)) if el && ! el._is_setting

    setElValue:  (el, value)->
        if el.attr('type')

        @cached_fields = null
        if @view.model
            this.setAllFields()
        @view.$el.on("change", input_selector, this.onFieldChange)

    rebindModel: (view, model)->
        this.clearErrors()
