6

I have a pretty basic setup like this:

var MusicModel = Backbone.Model.extend({});
var PlaylistCollection = Backbone.Collection.extend({
    model: MusicModel,
    events: {'add':'add'},
    add: function(mdl){
        //This is working perfectly fine even output of model
        console.log(mdl);
    }
});

var playlistCollection = new PlaylistCollection();
playlistCollection.add(new Music(data));

The model is not actually added to the collection. If I try to use Chrome console and enter playlistCollection.length it will output 0 and playlistCollection.models will output [].

Any idea what I am doing wrong?

4

1 に答える 1

7

Backbone のコレクションには、既にadd メソッドがあります。独自に作成することで、ベース メソッドをマスクし、通常の動作であるコレクションへのモデルの挿入を防止します。メソッドの名前を別の名前に変更するか、基本メソッドを呼び出して問題を解決します。

var PlaylistCollection = Backbone.Collection.extend({
    model: MusicModel,

    add: function(model, opts){
        Backbone.Collection.prototype.add.call(this, model, opts);
        console.log(model);
    }
});

http://jsfiddle.net/nikoshr/WPrTu/

于 2012-12-19T10:13:38.490 に答える