在Backbone集合上调用collection.fetch({add:true})之后,我想在更新集合的视图完成渲染后触发事件。
“collection view”有一个“添加”方法,为集合中的每个新项目生成“item view”,在该视图上调用“渲染”,并将其添加到集合中图。
有没有办法在提取集合时触发事件,并且所有项目都已添加并呈现?
答案 0 :(得分:5)
fetch
method on collections采用success
参数:
抓取
collection.fetch([options])
[...] 选项哈希需要传递的
success
和error
回调(集合,响应,选项)和(集合,xhr,选项)分别作为论据。
在集合更新后,success
回调将被称为,因此在所有"add"
事件被触发后,它将被称为和处理。所以你可以这样做:
collection.fetch({
success: function(collection, response, options) {
collection.trigger('fetched_and_notified');
}
});
任何关心的人都可以collection.on('fetched_and_notified', ...)
倾听这样的事件。如果您愿意,可以提供自己的fetch
实现来自动触发此事件,如下所示:
fetch: function(options) {
options = options ? _.clone(options) : { };
var success = options.success;
options.success = function(collection, response, options) {
collection.trigger('fetched_and_notified', collection);
if(success)
success(collection, response, options);
};
Backbone.Collection.prototype.fetch.call(this, options);
}
答案 1 :(得分:1)
您可以根据应用程序使用Backbone.Events
在所有类型的对象上触发自定义事件要在渲染视图后触发事件,请执行以下操作:
var MyView = Backbone.View.extend({
initialize: function() {
_.bindAll(this);
},
render: function() {
//Do all the rendering
this.trigger('myEvent');
}
});