2012-07-18 11 views
5

E 'possibile eseguire l'override del metodo di Collection.add a livello globale in spina dorsale in questo modo:Overriding 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); 
} 

l'API che sto utilizzando SEMPRE contiene i modelli reali di un livello verso il basso per le collezioni . Sotto items e mi trovo a scavalcare il metodo .add per tutte le raccolte. Ho provato quello che ho sopra ma non sembra funzionare. Qualche idea?

Grazie,

Luis

+0

Nota: 'var = newModels = models.items;' dovrebbe essere 'var newModels = models.items;'. Ne sono consapevole, ma non è quello che sta infrangendo il codice. – luisgo

+0

Hai mai risolto questo problema? – seebiscuit

risposta

8

provare quanto segue:

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

Quindi è possibile estendere tutte le collezioni da Example.

+0

Grazie. Questo è fondamentalmente quello che sto facendo per collezione in questo momento. A questo punto tornando indietro e cambiando tutte le definizioni della mia raccolta sarebbe troppo lavoro. La mia speranza era trovare qualcosa che potesse applicarsi globalmente, quindi, piuttosto che deviare dalla norma, avrei rimosso il codice. Grazie! – luisgo