【发布时间】:2012-11-10 12:31:30
【问题描述】:
在我的基于 Backbone.js 的应用程序中,我正在与我的 API 交谈,该 API 以 204 状态和一个空正文响应,以防请求的集合尚未包含任何数据。在我看来,这就是 RESTful API 在这种情况下应该如何响应。
现在在我的应用程序中,我遇到了问题,显然在收到 204 响应后没有触发任何事件。我尝试将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 。在里面我检查给定的响应是否为空。如果是这样,我将集合模型设置为 [] 从而触发重置事件。集合视图绑定到该事件,然后可以呈现一些“这里没有内容”模板。
标签: jquery ajax backbone.js