code: function makeGetter(fnc, key) {
    return function (e, data) {
      const el = e.currentTarget;
  
      // TODO manage delayInput on all elements if $el.length > 1
      if (data && data.internal) return;
  
      let value = fnc(el);
  
      /* do not set value if we are extracting and no value has been set in DOM
       * element
       */
      if (!value && data && data.extract) return;
  
      // TODO... should probably unset here
      if (!value && !_.isBoolean(value) && value !== 0) value = null;
  
      // TODO better passing of observeOptions
      this.model.set(key, value, this.model.observeOptions);
    };
  }
docs: /*
  Returns an event handler that is called when DOM events are triggered.
  It uses the bindings getter to extract a value from
  the DOM, and the set that value on the model