backbone.js迭代一个集合

时间:2013-05-14 00:49:08

标签: backbone.js collections

我已经为Logs设置了一个集合。 api将结果返回为JSON。我看到了上一个主题,建议在集合中添加解析方法。这样做,当我执行代码时,我没有得到任何输出到控制台。尽管如此,我是Backbone的新手,因此任何见解和/或指导都将受到赞赏。我对collection的理解可能不正确。

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

1 个答案:

答案 0 :(得分:26)

Fetch是异步的。重写代码以使用回调函数调用render:

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