code: function(vars, slot, getter) {
              if (!Array.isArray(vars)) {
                  vars = [vars];
              }
              if (vars.length == 0) return null;
              if (typeof slot === 'string') {
                  slot = this[slot];
              }
              if (typeof getter === 'undefined') {
                  getter = function() {
                      return this.data(vars[0]);
                  };
              }
              var listener = {
                  obj: this,
                  slot: slot,
                  getter: getter
              };
              vars.forEach(
                  function(name) {
                      var data = this.findDataBinding(name);
                      data[1].push(listener);
                  }, this
              );
              return listener;
          }
docs: Bind to data updates.
  When the data changed, the  `slot` is call with `this` object
  and the data's value as unique argument.
  @param {array} vars array of names of data to watch.
  @param {function} slot function to call when data changed.
  @param {string} slot name of the method to call when data changed.
  @param {function} getter function getting the binded value.
  @return {object} the listener you can give to `unbindData`.
  @memberof WTag