4

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

如果没有..我该如何扩展它?

谢谢!

4

4 回答 4

16

只需使用事件“请求”。当模型(或集合)开始向服务器发出请求时,它会触发。它从 0.9.9 版开始可用。

于 2012-12-15T08:05:30.157 回答
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
});
于 2012-10-04T13:54:19.793 回答
2

您只需在每次 fetch 调用之前添加对设置加载屏幕的方法的调用:

this.collection.on('reset', this.displayNormal)
this.displayLoader();
this.collection.fetch();

这应该让你开始。如果你需要那个事件(我明白你为什么会这样),你可以像这样覆盖 fetch

fetch: function() {
  this.trigger('beforeFetch');
  return Backbone.Collection.prototype.fetch.apply(this, arguments);
}

希望这可以帮助!

于 2012-10-04T13:56:14.123 回答
0

您可以做的是在调用 fetch 时显示加载图像,然后为 fetch 设置成功回调以再次隐藏它。

于 2012-10-04T13:49:38.697 回答