2013-05-14 5 views
15

Ustawiłem kolekcję dla Logów. Interfejs api zwraca wyniki jako JSON. Widziałem poprzedni temat, w którym sugerowano dodanie metody parsowania do kolekcji. Po wykonaniu tej czynności, kiedy wykonuję kod, nie otrzymuję żadnych danych wyjściowych do konsoli. Niemniej jednak, jestem nowy w kręgosłup, więc wszelkie docenianie i/lub wskazówki byłyby doceniane. Moje rozumienie collection.each może nie być poprawne.backbone.js iteruje kolekcję

var Log = Backbone.Model.extend({}); 

var LogList = Backbone.Collection.extend({ 
    model: Log, 
    url: 'api/logs', 
    parse: function(response) { 
     return response.logs; 
    } 
}); 

var LogListView = Backbone.View.extend({ 

    el: $('#logs-list'), 

    initialize: function() { 
     this.collection = new LogList(); 
     this.collection.fetch(); 
     this.render(); 
    }, 
    render: function() { 
     this.collection.each(function(log) { 
      console.log('log item.', log); 
     }); 
    } 
}); 

$(document).ready(function(){ 
    console.log('ready.'); 
    new LogListView(); 
}); 

Odpowiedz

25

Pobieranie jest asynchroniczne. Przepisz swój kod, aby wywołać render z oddzwonieniem:

var LogListView = Backbone.View.extend({ 

el: $('#logs-list'), 

initialize: function() { 
    var self = this; 
    this.collection = new LogList(); 
    this.collection.fetch().done(function(){ 
     self.render(); 
    }); 

}, 
render: function() { 
    this.collection.each(function(log) { 
     console.log('log item.', log); 
    }); 
} 
}); 
+0

Jak zmodyfikować, aby korzystać z MarionetteJS .. – Merlin