javascript - 主干 collection.add 不工作

标签 javascript backbone.js underscore.js

我有一个像这样的非常基本的设置:

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 将输出 []

知道我做错了什么吗?

最佳答案

Backbone 中的集合已经有一个 add method .通过编写自己的方法,您可以屏蔽基本方法并防止正常行为:将模型插入集合中。将您的方法重命名为其他名称或调用基本方法来解决您的问题:

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/

关于javascript - 主干 collection.add 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13949882/

相关文章:

javascript - 使用 JavaScript/jQuery 在页面加载后触发 Bootstrap 导航栏

javascript - Soundcloud HTML5 API 不适用于 Facebook JS

javascript - 如果我使用主干验证,我如何测试模型的验证

unit-testing - 使用 UnderscoreJS 为 AngularJS 编写测试

javascript - React/redux 具有相同容器的多个组件

javascript - 网络爬虫遇到javascript

javascript - 用 Backbone 处理权限

mongodb - 使用 mongodb 存储在客户端和服务器端共享 Backbone 代码

javascript - 使用 lodash 或 underscorejs 的性能

javascript - 为什么 Underscore.js chain() 方法不是惰性的?