2012-07-18 4 views
5

をオーバーライドすることはそうのようなバックボーンでグローバルcollection.addメソッドをオーバーライドすることが可能です: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); 
} 

私はいつも使用しているAPIは、コレクションのための実際のモデル1レベル下が含まれています。 itemsの下で、すべてのコレクションについて.addメソッドをオーバーライドしています。私は上記のことを試しましたが、うまくいかないようです。何か案は?

おかげで、

ルイス

+0

注: 'var = newModels = models.items;'は 'var newModels = models.items;'にする必要があります。私はそれを認識していますが、それはコードを壊すものではありません。 – luisgo

+0

これまでに解決しましたか? – seebiscuit

答えて

8

は、以下のことを試してみてください。

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

次にあなたがExampleからすべてのコレクションを拡張することができます。

+0

ありがとうございます。それは基本的に今コレクションごとにやっていることです。この時点で、私のコレクションの定義をすべて変更すると、あまりにも多くの作業が必要になります。私が望むのは、コードを削除するという基準から逸脱するのではなく、世界的に適用されるものを見つけることでした。ありがとう! – luisgo