6

我有一个非常基本的设置,如下所示:

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));

该模型实际上并未添加到集合中。如果我尝试使用 Chrome 控制台并输入playlistCollection.length,它将输出 0 并playlistCollection.models输出[].

知道我做错了什么吗?

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 回答