2012-07-18 13 views
5

¿Es posible reemplazar el método collection.add a nivel mundial en la columna vertebral de este modo:Anulación Backbone.Collection.prototype.add

Backbone.Collection.prototype._add = Backbone.Collection.prototype.add; 
Backbone.Collection.prototype.add = function(models, options) { 
    var = newModels = models.items; 
    Backbone.Collection.prototype._add(newModels, options); 
} 

la API estoy usando siempre contiene los modelos reales en un nivel inferior para las colecciones . Debajo de items y me encuentro anulando el método .add para todas las colecciones. Intenté lo que tengo arriba pero no pareció funcionar. ¿Algunas ideas?

Gracias,

Luis

+0

Nota: 'var = newModels = models.items;' debe ser 'var newModels = models.items;'. Estoy al tanto, pero eso no es lo que está rompiendo el código. – luisgo

+0

¿Alguna vez resolvió esto? – seebiscuit

Respuesta

8

Pruebe lo siguiente:

var Example = Backbone.Collection.extend({ 
    add: function(models, options) { 
     Backbone.Collection.prototype.add.call(this, models.items, options); 
    } 
}) 

A continuación, se puede extender todas las colecciones de Example.

+0

Gracias. Eso es básicamente lo que estoy haciendo por colección en este momento. En este punto, volver atrás y cambiar todas las definiciones de mi colección sería demasiado trabajo. Mi esperanza era encontrar algo que se aplicara globalmente, entonces, en lugar de desviarme de la norma, eliminaría el código. ¡Gracias! – luisgo