2013-05-14 23 views
15

Ho creato una raccolta per i registri. L'API restituisce i risultati come JSON. Ho visto un argomento precedente in cui è stato suggerito di aggiungere il metodo di analisi alla raccolta. Fatto ciò, quando eseguo il codice non ricevo alcun output sulla console. Ciononostante, sono nuovo per Backbone quindi qualsiasi comprensione e/o guida sarebbe apprezzata. La mia comprensione di collection.each potrebbe non essere corretta.backbone.js iterate una raccolta

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

risposta

25

Il recupero è asincrono. Riscrivi il tuo codice per chiamare il rendering con una richiamata:

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

Come modificheresti per utilizzare MarionetteJS .. – Merlin

Problemi correlati