2013-05-14 149 views
15

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

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

回答

25

提取是异步的。重写你的代码来调用渲染回调:

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

你将如何修改使用MarionetteJS .. – Merlin 2014-06-03 16:27:23