在我的基于 Backbone.js 的应用程序中,我正在与我的 API 进行对话,该 API 会响应 204 状态和空正文,以防请求的集合尚不包含任何数据。在我看来,RESTful API 在这种情况下应该如何响应。
现在我的应用程序遇到了问题,显然在收到 204 响应后没有触发任何事件。我尝试绑定(bind) reset 和 all ,例如:
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();
};
但事件从未触发。所以我尝试给 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;
}
});
};
同样的行为。如果响应是 204,则不会到达任何调试语句。那么我该如何处理 204 响应呢?我是否必须深入研究 sync 并为 204 添加额外的处理,或者 Backbone 中是否有我还不知道的东西?
谢谢菲利克斯
请您参考如下方法:
这个解决方案看起来相当前卫,但同时又很尴尬:
我只是在集合中定义了 parse 方法,以便它检查传递的响应对象是否为空。只有发生 204 时才会出现这种情况。然后在 parse 中我设置了 this.collection.models = [] ,它会触发 reset 事件。 Collection View 绑定(bind)到该事件,运行一个可以查看 this.collection.models 内部的函数。如果没有给出模型,则可以呈现“无内容”模板,而不是标准模板。
如果有人有更好的方法,我将不胜感激!
