在获取事件之前的BackboneJS

时间:2012-10-04 13:47:11

标签: backbone.js backbone-events

我有一个集合(使用Backbone.paginator)从服务器获取一组模型并返回给我。此集合用于我的“主视图”和“子视图”。在每个视图中,我都有一个on(“change”)事件,在每个视图中都有一个特殊的事情。我在想是否可以听一些“start fetch”事件(类似于jquery上的beforeLoad)来添加一个加载器gif。 Backbone是否提供了其中之一?

如果没有..我该如何延长它?

谢谢!

4 个答案:

答案 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的成功回调以再次隐藏它。