我已经扩展了Backbone Collection类以包含一个“save”方法,该方法本质上是一个同步的代理。每当执行“保存”时,就会将一组对象提交给后端。但是,后端目前没有结构化来处理直接集合,它期望对象。有没有人对如何在对象中“包装”这个集合有任何建议?
我试过了:
var objectCollection = {};
objectCollection['key'] = backboneCollection.models;
但是上面的结果是“模型没有toJSON方法”错误 - 因为我只是代理同步。感谢。
答案 0 :(得分:3)
要为Backbone.sync
提供自定义格式,您必须将数据作为JSON字符串传递并提供正确的contentType
。像这样:
var M=Backbone.Collection.extend({
url: '/echo/json/',
save: function() {
var data={}, opts= {};
data.key=this.toJSON();
opts.contentType = 'application/json';
opts.data = JSON.stringify(data);
Backbone.sync.call(this,'update',this, opts);
}
});
和小提琴http://jsfiddle.net/xx4pr/(检查您的控制台以查看请求)