Backbone.js итерация коллекции - программирование
Подтвердить что ты не робот

Backbone.js итерация коллекции

Я создал коллекцию для журналов. Api возвращает результаты как JSON. Я видел предыдущую тему, где было предложено добавить метод parse в коллекцию. Сделав это, когда я выполняю код, я не получаю никакого вывода на консоль. Тем не менее, я новичок в Backbone, поэтому любое понимание и/или руководство будут оценены. Мое понимание collection.each может быть неправильным.

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

Ответ 1

Fetch является асинхронным. Перепишите свой код для вызова рендера с обратным вызовом:

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