Backbone.js を使用して、データをコレクションにブートストラップしようとしています。私のブートストラップは次のようになりますlog.reset( <JSON> );
コレクションを console.log すると、データでいっぱいのオブジェクトがたくさん表示されます。問題は、ループ内の個々のモデルで console.log を実行すると、データのない空のオブジェクトがたくさん表示されることです。データはすべてコレクションにありますが、各 forEach パスでテンプレートに渡すことができません。プロジェクトの別の部分でまったく同じコード構造を使用して、完全に機能するコレクション ビューをレンダリングしました...なぜこれが機能しないのかわかりません。
コレクションのリセット イベントをリッスンしていることに注意してください。
//Log Model
var LogItem = Backbone.Model.extend({});
var logItem = new LogItem();
//Log Collection
var Log = Backbone.Collection.extend({
model: LogItem
});
var log = new Log();
//Log Item View
var LogItemView = Backbone.View.extend({
tagName: 'tr',
template: _.template($('#log-item-template').html()),
render: function(){
var attributes = this.model.toJSON();
this.$el.html(this.template( attributes ));
console.log( this.model.toJSON() ); //This shows a bunch of empty objects
return this;
}
});
//Log View
var LogView = Backbone.View.extend({
el: '#log',
initialize: function() {
this.collection.on('reset', this.render, this);
},
render: function(){
this.addAll();
console.log( this.collection.toJSON() ); //This shows objects full of data
},
addOne: function(food) {
var logItemView = new LogItemView({model: logItem});
this.$el.append(logItemView.render().el);
},
addAll: function() {
this.$el.html('');
this.collection.forEach(this.addOne, this);
}
});
var logView = new LogView({collection: log});
空のモデルを修正するにはどうすればよいですか?