2012-12-19 13 views
6

mam dość podstawową konfigurację takiego:Backbone collection.add nie działa

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

Model nie jest faktycznie dodane do kolekcji. Jeśli spróbuję użyć konsoli Chrome i wprowadzić playlistCollection.length, wyświetli ona 0, a playlistCollection.models wyświetli [].

Każdy pomysł, co robię źle?

Odpowiedz

7

Kolekcje w kręgosłucie mają już add method. Pisząc własne, maskujesz metodę bazową i zapobiegasz normalnemu zachowaniu: wstawiasz model do kolekcji. Przemianować swoją metodę na coś innego lub wywołać metodę podstawową, aby rozwiązać swój problem:

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

Nie wiem jak mogłam przegapić czegoś takiego. Przyjmie za pięć minut. – ewooycom

+1

@ user1188570 W tych przypadkach winię entuzjazm :) – nikoshr