【发布时间】:2016-01-13 03:01:11
【问题描述】:
我一直在查看有关如何使用非 RESTful 服务器保存 Backbone 集合的多篇文章,但我仍然有点困惑。我创建了一个集合,其中我覆盖了 toJSON 方法来自定义我的数据以发布到我的 API("/api/entity/735/request/personDelete" 目前已换成 jsfiddles /echo/json)。所以我创建了一个save 方法,它使用Backbone.sync,在success 上我正在注销任何类型的响应并且对象是空的,不确定在哪里丢失或我做错了什么;谁能给我一些指导?只是想让这个例子正常工作,这样我就可以继续使用这样的东西。
JS
var PersonCollection = Backbone.Collection.extend({
model: PersonModel,
url: function() {
// Dummy JSFiddle endpoint
// Example non-RESTful url "/api/entity/735/request/personDelete"
return '/echo/json/';
},
/**
* Override toJSON to loop through collection models making
* custom objects containing specific attributes to be posted.
*/
toJSON: function() {
console.log(this.models);
var plucked = this.models.map(function(model) {
return _.pick( model.toJSON(), ["id","name", "teams"] )
});
console.log(plucked);
return plucked;
},
save: function(options) {
Backbone.sync('create', this, {
success: function(data, textStatus, jqXHR) {
console.log('Saved!', data);
}
});
}
});
JSFiddle: http://jsfiddle.net/kyllle/f1h4cz7f/3/
【问题讨论】:
-
请检查是否发出了请求,参数是否按预期传递(我对此表示怀疑)并且您会收到 2xx 响应。请编辑您的帖子并指定请求的外观(例如,表单编码或应用程序/json 等)。我会说事件
Backbone.sync()可能不适合您的需求。您可能希望直接在save()中使用$.ajax(),或者,如果您有更多与“非标准”REST API 通信的模型和集合,您可能希望覆盖Backbone.sync()。 -
这是我现在的问题的一部分,我不确定我需要在哪里或如何传递参数以便可以有效地运行保存?
-
您真的要保存集合中的所有内容吗?我知道您说您的后端不是 RESTful,但是您的后端期望的是什么?以及它如何期待 json?
-
styler,请注意:您还没有回应 Javier 和我的详细信息请求(即使您不确定要做什么和如何做,但至少应该确定您的要求是什么)。 Yura 的回答是否回答了您的问题/是否有帮助?
-
对不起,我花了一段时间才回复,我认为我现在的问题是我在保存响应中没有看到我在 toJSON 中修改的更新数据。我单击发布数据,然后我看到 toJSON 仅使用 id 名称和团队进行了正确的更新,然后保存火灾但成功仅显示一个空白对象,只是想知道这些如何正确连接?
标签: javascript jquery json rest backbone.js