Question

Je suis un moyen de faire compat entre XUI et Backbone, mais j'ai rencontré un problème dans ma conception. Je suppose.

Il est. Je veux étendre XUI avec une méthode attr d'appel qui serait en mesure de traiter un hachage de attributes/values. jQuery fait, et Backbone exploite. C'est la raison pour laquelle je veux faire.

Malchanceux, il existe déjà une méthode attr dans XUI. Alors, quand je fais:

xui.extend({
  attr:   function (attributes) {
    if (typeof attributes == "object") {
      for (var attr in attributes) {
        this.attr(attr, attributes[attr]);
      }
    };
  }
});

Bien sûr, le proto de XUI ont juste une méthode attr. Mien. Comment puis-je avoir deux?

Quelque chose à faire suivant disponible:

xui(element).attr('attr', 'value');
xui(element).attr({'attr': 'value', 'foo': 'bar'});

Merci pour la lecture et l'aide:)

Était-ce utile?

La solution

Vous devez enregistrer une référence à la fonction d'origine, puis regarder les arguments de la fonction est appelée avec pour déterminer temps, vous devriez appeler votre propre version ou l'original.

Quelque chose comme ça (code non testé, donc utiliser seulement pour l'inspiration):

var originalAttr = xui.attr;

xui.attr = function () {
  if(typeof arguments[0] === 'string') {
   originalAttr.apply(this, arguments);
  }
  else if(typeof arguments[0] === 'object') {
    for (var attr in attributes) {
      originalAttr.call(this, attr, attributes[attr]);
    }
  }
  else {
   /* unsupported arguments */
  }
};
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top