【发布时间】:2016-06-24 12:04:10
【问题描述】:
对不起,我的英语不好。告诉我为什么会发生以下情况:
我有一些骨干收藏:
var Background = window.Models.Background = Backbone.Model.extend({});
var Backgrounds = window.Models.Backgrounds = Backbone.Collection.extend({
model: window.Models.Background,
url: '/backgrounds/',
initialize: function() {
this.fetch({
success: this.fetchSuccess(this),
error: this.fetchError
});
},
fetchSuccess: function( collect_model ) {
new BackgroundsView ({ collection : collect_model });
},
fetchError: function() {
throw new Error("Error fetching backgrounds");
}
});
还有一些观点:
var BackgroundsView = window.Views.BackgroundsView = Backbone.View.extend({
tagName: 'div',
className: 'hor_slider',
initialize: function() {
this.render();
},
render: function() {
console.log(this.collection);
this.collection.each( function (background) {
console.log(background);
//var backgroundView = new BackgroundView ({ model: background });
//this.$el.append(backgroundView.render().el);
});
}
});
现在我正在创建集合
var backgrounds = new Models.Backgrounds();
但是当我必须渲染这个视图时,在对集合进行排序的过程中,它的长度是 0,但应该是 2。 This log I see at console。这怎么可能?我做错了什么??
【问题讨论】:
-
为什么不让它变得更简单呢?在视图中设置一个监听器,它监听集合的变化,并为每一个变化重新渲染视图。
-
@MorKadosh,我试着按照你说的去做。但是我需要在集合初始化后立即创建一个“视图”。但实际上,“取”发生在代码执行的最后。在调用“fetchSuccess”的时候集合还没有准备好。
标签: javascript backbone.js collections