我this.collection.each()
用来遍历从后端获取的集合。
问题:我注意到,当我将reset
集合的事件绑定到render
方法中的视图的initialize
方法并将 a console.log()
within放置this.collection.each
时,我看到了预期的控制台输出。
但是,如果我不进行上述绑定,而只是使用this.render()
within initialize
,console.log()
则不会输出任何内容。这对我来说似乎很奇怪,有人可以提供解释吗?
console.log(this.collection);
我还在循环之前放置了一个,这总是正确输出集合!我猜想在视图初始化时没有填充集合,但这将导致console.log(this.collection);
不显示任何内容。
这个作品
SimilarPhotoListView = Backbone.View.extend({
el: '#modal_similar_items',
initialize: function() {
this.collection.on('reset', this.render, this);
},
render: function() {
console.log(this.collection);
this.collection.each(function(photo, index) {
console.log('hello');
}, this);
return this;
}
});
这不会从 this.collection.each() 中输出
SimilarPhotoListView = Backbone.View.extend({
el: '#modal_similar_items',
initialize: function() {
this.render();
},
render: function() {
console.log(this.collection);
this.collection.each(function(photo, index) {
console.log('hello');
}, this);
return this;
}
});
这两个类都通过以下方式实例化:
renderSimilarPosts: function() {
this.similarPhotoList = new SimilarPhotoCollection();
this.similarPhotoListView = new SimilarPhotoListView({ collection: this.similarPhotoList });
this.similarPhotoList.fetch({
data: {post_id: this.model.id},
processData: true
});
}