2012-12-19 10 views
6

Tôi có một thiết lập khá cơ bản như thế này:Backbone collection.add không hoạt động

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

Mô hình này không thực sự bổ sung vào bộ sưu tập. Nếu tôi cố gắng sử dụng bảng điều khiển Chrome và nhập playlistCollection.length, nó sẽ xuất ra 0 và playlistCollection.models sẽ xuất ra [].

Bất kỳ ý tưởng nào tôi đang làm sai?

Trả lời

7

Bộ sưu tập trong xương sống đã có add method. Bằng cách viết của riêng bạn, bạn mặt nạ các phương pháp cơ bản và ngăn chặn các hành vi bình thường: chèn một mô hình vào bộ sưu tập. Đổi tên phương pháp của bạn để cái gì khác hoặc gọi phương thức cơ bản để giải quyết vấn đề của bạn:

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/

+0

Tôi không biết làm thế nào tôi có thể bỏ lỡ một cái gì đó như thế này. Sẽ chấp nhận trong năm phút nữa. – ewooycom

+1

@ user1188570 Trong những trường hợp đó, tôi đổ lỗi cho sự nhiệt tình :) – nikoshr