伙计们,我怎么能赶上' Backbone集合接收带数据的数组时的事件?我需要这个来循环数据并在某些条件下加入一些项目。 我有:
MyColl = Backbone.Collection.extend({
model : App.Models.Movie,
url: '/movies/start',
events : {
'then': 'show', // no one is calling
'fetch': 'show'
},
show: function() {
console.log(this.models);
console.log(this.collection);
}
});
在获取数据后,我需要对数据做一些神奇的事情。谢谢你的回答。
我尝试了所有这些,但没有任何作用..
Backbone.Collection.extend({
model : App.Models.Movie,
url: '/movies/start',
initialize: function() {
console.log(this.models);
this.models.on('change', this.print, this);
},
events: {
'add' : 'print',
'change': 'print',
'fetch': 'print'
},
print: function() {
console.log(this.models + '!!!!'); // HOW TO CALL THIS, WHEN DATA IS COMING TO THIS COLLECTION AFTER FETCH ?
}
});
答案 0 :(得分:0)
从服务器获取连接时,请确保reset
为真:
col.fetch({reset: true});
然后注意集合中的reset
事件:
Backbone.Collection.extend({
events: {'reset': 'resetHappend'},
resetHappened: function() {
// whatever you need to do
},
// ...
答案 1 :(得分:0)
我找到了答案。
Backbone.Collection.extend({
model : App.Models.Movie,
url: '/movies/start',
initialize: function() {
this.on('sync', this.joinItems, this);
},
joinItems: function() {
console.log('Now I could loop over the data');
console.log(this.models);
}
});
然后:
movies.fetch().then(function() {
var moviesView = new App.Views.MoviesView({collection: movies});
$(document.body).append(moviesView.render().el);
});
这就是我所需要的。感谢所有