我有一个集合(使用Backbone.paginator)从服务器获取一组模型并返回给我。此集合用于我的“主视图”和“子视图”。在每个视图中,我都有一个on(“change”)事件,在每个视图中都有一个特殊的事情。我在想是否可以听一些“start fetch”事件(类似于jquery上的beforeLoad)来添加一个加载器gif。 Backbone是否提供了其中之一?
如果没有..我该如何延长它?
谢谢!
答案 0 :(得分:16)
只需使用活动"请求"。它在模型(或集合)启动对服务器的请求时触发。它从版本0.9.9开始提供。
答案 1 :(得分:3)
您可以像这样扩展Backbone Collection原型:
(function() {
var fetch = Backbone.Collection.prototype.fetch;
Backbone.Collection.prototype.fetch = function() {
this.trigger('beforeFetch');
return fetch.apply(this, arguments);
};
})();
现在您可以执行以下操作:
myCollection.on('beforeFetch', function() {
// take care of before fetch business
});
答案 2 :(得分:2)
您只需要在每个提取调用之前添加一个设置加载屏幕的方法:
this.collection.on('reset', this.displayNormal)
this.displayLoader();
this.collection.fetch();
这应该让你开始。如果您需要该事件(我可以理解您的原因),您可以覆盖此类提取
fetch: function() {
this.trigger('beforeFetch');
return Backbone.Collection.prototype.fetch.apply(this, arguments);
}
希望这有帮助!
答案 3 :(得分:0)
您可以执行的操作是在调用fetch时显示加载图像,然后设置fetch的成功回调以再次隐藏它。