如何在Backbone.js集合请求中处理204响应

Geo*_*ieF 5 ajax jquery backbone.js

在我的基于Backbone.js的应用程序中,我正在与我的API进行通信,它响应204状态和空体,以防请求集合但不包含任何数据.在我看来,RESTful API在这种情况下应该如何响应.

在我的应用程序现在我遇到了问题,显然在收到204响应后没有触发任何事件.我试图绑定resetall喜欢:

  FoosCollectionView.prototype.initialize = function() {
    this.collection = new FoosCollection;
    this.collection.bind('reset', this.render, this);
    this.collection.bind('all', this.render, this);
    return this.collection.fetch();
  };
Run Code Online (Sandbox Code Playgroud)

但事件永远不会发生.所以我试着给fetch一些回调:

  FoosCollectionView.prototype.initialize = function() {
    this.collection = new FoosCollection();
    return this.collection.fetch({
      success: function(a, b, c) {
        debugger;
      },
      error: function(a, b, c) {
        debugger;
      },
      complete: function(a, b) {
        debugger;
      }
    });
  };
Run Code Online (Sandbox Code Playgroud)

相同的行为.如果响应是204,则不会达到调试语句.如何处理204响应呢?我是否需要深入挖掘sync并为204添加额外处理,或者Backbone中有什么东西我还不知道?

Thx Felix

Geo*_*ieF 0

这个解决方案看起来相当前卫,但同时又很尴尬:

我只是parse在集合中定义该方法,以便它检查传递的响应对象是否为空。只有发生 204 时才会出现这种情况。然后在里面parse我设置this.collection.models = []触发reset事件。集合视图绑定到该事件,运行一个可以查看内部的函数this.collection.models。如果没有给出模型,则可以呈现“无内容”模板而不是标准模板。

如果有人有更好的方法,我将不胜感激!