web-dev-qa-db-ja.com

backbone.jsがコレクションを繰り返す

ログのコレクションを設定しました。 APIは結果をJSONとして返します。コレクションにparseメソッドを追加することが提案された以前のトピックを見ました。そうすることで、コードを実行してもコンソールに何も出力されません。それにもかかわらず、私はバックボーンに不慣れなので、洞察やガイダンスをいただければ幸いです。 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();
});
15
porterhaus

フェッチは非同期です。コールバックで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);
    });
}
}); 
26
Scott Puleo